Javascript d3.js中每行的多个列值之和
我使用的是一个.csv文件,它需要根据每行中的每个键查找多个列值的总和。示例如下所示-Javascript d3.js中每行的多个列值之和,javascript,mysql,d3.js,Javascript,Mysql,D3.js,我使用的是一个.csv文件,它需要根据每行中的每个键查找多个列值的总和。示例如下所示- key | value1 | value2 | value3 | value4 -----+--------+--------+--------+-------- mike | 1 | 3 | 5 | 7 -----+--------+--------+--------+-------- mila | 2 | 4 | 6 | 8 --
key | value1 | value2 | value3 | value4
-----+--------+--------+--------+--------
mike | 1 | 3 | 5 | 7
-----+--------+--------+--------+--------
mila | 2 | 4 | 6 | 8
-----+--------+--------+--------+--------
minda| 9 | 11 | 13 | 15
因此,我需要以动态方式找到每个键的“value1+value2+value3+value4”之和,而不是提到d.value1+d.value2+d.value3+d.value4
谢谢…您是否正在为CSV发出AJAX请求?如果要在其中进行处理,请执行以下操作:
d3.csv("data.csv")
.row(function(d) {
return {
key: d.key,
mySum: ((+d.value1) + (+d.value2) + (+d.value3) + (+d.value4))
};
})
.get(function(error, rows) {
console.log(rows);
});
例如
编辑评论
如果不知道列数,请执行以下操作:
d3.csv("data.csv")
.row(function(d) {
var mySum = 0;
for (var o in d) { // iterate all the properties of d
if (o === "key") continue; // if it's our key field skip it
else mySum += +d[o]; // everyone else into the sum
}
return {
key: d.key,
mySum: mySum
};
})
.get(function(error, rows) {
console.log(rows);
});
更新。否如果只有d3.js才有可能,那就更好了。@Faisal:你已经设法读取了.csv文件了吗?请显示您的代码的当前状态…您的数据结构是什么?您能修复您的设计吗?我尝试过这种方式来读取csv,但它是一种静态方式-var avgs=d3.nest().key(函数(d){return d.key;})。rollup(函数(d){return{value:d.value1+d.value2+d.value3+d.value4;};};}).entries(csv);谢谢。但我需要以动态方式获取总和,而不是附加诸如d.value1、d.value2等列名。由于列数超过100,我应该采用动态方式,以使其对用户友好。