计算用分号分隔的字符串的出现次数



我有一个.csv文件,它是一个文章数据库。每篇文章都有一些关联的关键字,每次的关键字数量都不同。

有点像这样:

article_id,keywords
1,word1;word2;word3
2,word1;word4
3,word2;word3

我想计算每个关键字在我的.csv文件中出现的次数,我该怎么做?是的,它们用分号分隔。

以下是.csv的示例:

id,keywords,date,nbComments,nbView,nbStars,nbVotes,source
44941,Alain Soral;Emmanuel Macron;France;François Fillon;Front national;Mélenchon;Politique,2017-04-04 00:00:00,21,101368,5,688,E&R
44309,Féminisme;France;François Hollande;Immigration;Internet;Marine Le Pen;Médias;People;Politique;Terrorisme,2017-02-23 00:00:00,30,43908,5,226,ERTV
45338,Allemagne;France;Histoire;Judaïsme;Médias;Pologne;Seconde Guerre mondiale,2017-04-25 00:00:00,31,24019,4,121,ERTV

获取关键字数组...

d3.merge(data.map(function(d) {
return d.keywords.split(";")
}))

。并用forEach计算出现次数:

var keywords = {};
d3.merge(data.map(function(d) {
return d.keywords.split(";")
})).forEach(function(d) {
keywords[d] = (keywords[d] || 0) + 1
})

这是一个使用您的 CSV 的演示(存储在<pre>元素中,因为我无法在堆栈代码段中使用真正的 CSV(:

var data = d3.csvParse(d3.select("#csv").text());
var keywords = {};
d3.merge(data.map(function(d) {
return d.keywords.split(";")
})).forEach(function(d) {
keywords[d] = (keywords[d] || 0) + 1
})
console.log(keywords)
pre {
display: none;
}
<script src="https://d3js.org/d3.v4.min.js"></script>
<pre id="csv">id,keywords,date,nbComments,nbView,nbStars,nbVotes,source
44941,Alain Soral;Emmanuel Macron;France;François Fillon;Front national;Mélenchon;Politique,2017-04-04 00:00:00,21,101368,5,688,E&R
44309,Féminisme;France;François Hollande;Immigration;Internet;Marine Le Pen;Médias;People;Politique;Terrorisme,2017-02-23 00:00:00,30,43908,5,226,ERTV
45338,Allemagne;France;Histoire;Judaïsme;Médias;Pologne;Seconde Guerre mondiale,2017-04-25 00:00:00,31,24019,4,121,ERTV</pre>

最新更新