Javascript d3.nest返回每行的值之和

Javascript d3.nest返回每行的值之和,javascript,d3.js,Javascript,D3.js,我有这样一个csv: name,na,profile,one,two,three,four, uni1,eng,impact,4,5,3,1 uni1,eng,overall,10,5,3,1 uni1,fr,impact,4,5,7,1 uni1,fr,overall,20,5,7,1 uni1,ger,impact,4,5,3,1 uni1,ger,overall,18,5,18,1 uni1,eng,impact,4,5,3,1 uni2,eng,overall,4,5,3,1 uni2,

我有这样一个csv:

name,na,profile,one,two,three,four,
uni1,eng,impact,4,5,3,1
uni1,eng,overall,10,5,3,1
uni1,fr,impact,4,5,7,1
uni1,fr,overall,20,5,7,1
uni1,ger,impact,4,5,3,1
uni1,ger,overall,18,5,18,1
uni1,eng,impact,4,5,3,1
uni2,eng,overall,4,5,3,1
uni2,fr,impact,4,5,3,30
uni2,fr,overall,4,5,3,1
uni2,ger,impact,4,5,3,1
uni2,ger,overall,4,21,3,1
uni2,spain,impact,4,5,3,1
uni2,spain,overall,4,5,3,1
uni2,spain,impact,4,20,3,1
uni2,lat,overall,4,19,3,1
uni2,lat,impact,4,5,17,1
我想计算一个d3嵌套,当
profile===total
时,它将为每个uni和na返回一个1234值之和

我想要一个对象数组,比如:

array[object0{uni1{
                  eng{
                  value:230}]
我成功地得到了所有的线与整体价值,但我不知道如何返回这样的东西

var nestedData = d3.nest()
            .key(function(d){return (d.profile=== "Overall").forEach(d.name);})
            //.rollup(function (v) { return d3.sum(v,function(d){return (d.four*4,d.three*3,d.two*2,d.one)/100 });})
            .sortKeys(d3.ascending)
            .entries(filteredData());

        console.log("Ranked :data",nestedData);

        return nestedData;

您想要的结果并不完全清楚,因为您没有告诉我们如何在同一个
uni
中定位不同
eng
的内部数组

因此,这里有一个解决方案(在众多解决方案中),请检查控制台以查看阵列的结构:

var csv=`name,na,profile,一,二,三,四,
uni1,发动机,冲击,4,5,3,1
uni1,英语,总体,10,5,3,1
uni1,fr,冲击,4,5,7,1
uni1,fr,总体,20,5,7,1
uni1,ger,冲击,4,5,3,1
uni1,ger,总体,18,5,18,1
uni1,发动机,冲击,4,5,3,1
uni2,英语,总体,4,5,3,1
uni2,fr,冲击,4,5,3,30
uni2,fr,总体,4,5,3,1
uni2,ger,冲击,4,5,3,1
uni2,ger,总体,4,21,3,1
uni2,西班牙,冲击,4,5,3,1
uni2,西班牙,整体,4,5,3,1
uni2,西班牙,冲击,4,20,3,1
uni2,lat,总体,4,19,3,1
uni2,lat,冲击,4,5,17,1`;
变量数据=d3.csvParse(csv,函数(d){
d、 一=+d.1;
d、 二=+d.2;
d、 三=+d.3;
d、 四=+d.4;
返回d;
});
var filteredData=data.filter(函数(d){
返回d.profile==“总体”
});
var nestedData=d3.nest()
.键(功能(d){
返回d.name;
})
.排序键(d3.升序)
.键(功能(d){
返回d.na
})
.汇总(功能(v){
返回v[0]。1+v[0]。2+v[0]。3+v[0]。4
})
.条目(过滤数据);
console.log(嵌套数据)
“我更喜欢按我想要的方式操作数据数组”-这是因为您可以;-)它总是在易用性、多功能性、灵活性和性能之间进行权衡,对吗?而且,可以说,这是对
d3.nest()
的近距离呼吁。不过,既然您提出了这个问题,我周五就向您提出挑战,让您添加一个代码片段,在vanilla JS中实现这一点!