我有一个.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
答案 0 :(得分:2)
获取关键字数组...
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>
元素中的演示,因为我无法在Stack片段中使用真实的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>