我有这个csv文本文件,我正在尝试创建一个数组,以便数组的每个名称都有一个对象(d.name),数组的值是人数和日期。 / p>
以下是我的数据,
系列名称日期人SMS12000003000000001 Joe 1990-01-01 200 SMS12000003000000001 Don 1990-02-01 252 SMS12000003000000001 John 1990-03-01 336 SMS12000003000000001 Bob 1990-04-01 112
我想要的只是我的新d3嵌套数组看起来像
对象 关键:名称 然后价值观是日期和人。
目前我的代码是,
var newarray=
d3.nest()
.key(function(d) { return d.Name;})
.entries(data);
console.log(newarray);
我也尝试使用函数(d)并返回d.people和d.date
答案 0 :(得分:0)
你能给出你想要的输出的例子吗?
如果它类似于[{"key" : "John", "values" : 2, etc...}]
,则可以使用:
var data = d3.nest()
.key(function(d) { return d.name; })
.rollup(function(v) { return v.length; })
.entries(data);
答案 1 :(得分:-1)
考虑到这个问题有多大年纪了,我想您已经解决了。但是,我将针对当前版本的D3(版本5)进行回答:
var data = [];
d3.csv("mydata.csv", function(d) {
data.push({
name: d.Name,
people: +d.People,
date: d.Date
});
}).then(function(d) {
var newarray = d3.nest()
.key(function(k) { return k.name; })
.entries(data);
console.log(newarray);
});
D3v5使用ES6 Promise异步读取数据,因此d3.csv
创建一个Promise并读取数据。我们建立删除数组列的数据数组。完成对d3.csv
的承诺后(读取完成),then
将执行包含嵌套代码的匿名函数。
注意:date: d.Date
将其保留为字符串,调用new Date(d.Date)
创建日期对象,如下所示:date: new Date(d.Date)