Javascript dc.js-如何按唯一id分组

Javascript dc.js-如何按唯一id分组,javascript,d3.js,dc.js,crossfilter,Javascript,D3.js,Dc.js,Crossfilter,我正在使用dc.js和crossfilter从csv创建3个行图表。前两个是straighforward,但第三个需要将维度设置为输入csv的多个列,因此我重新构造了数据,以便为该行的每个所需列(存在值)创建一个新的重复行,并在新列下输入该列值。见下文 旧结构: ID---rowchart1---rowchart2---rowchart3---rowchart3--- 1 2 三, 新结构: ID---rowchart1---rowchart2---newRowchart3 1 2 2 2 3

我正在使用dc.js和crossfilter从csv创建3个行图表。前两个是straighforward,但第三个需要将维度设置为输入csv的多个列,因此我重新构造了数据,以便为该行的每个所需列(存在值)创建一个新的重复行,并在新列下输入该列值。见下文

旧结构:
ID---rowchart1---rowchart2---rowchart3---rowchart3---
1
2
三,

新结构:
ID---rowchart1---rowchart2---newRowchart3
1
2
2
2
3
三,

这一切都很好,因为我能够将行图设置为这个新构造的列,但我在将原始计数显示在其他两个列中时遇到了问题。实际上,我在其他行图表中得到了重复计数。
是否有一种方法可以按唯一id分组,以便只计算那些唯一id而不是每行计数?
非常感谢

请参见:

您的示例是一个稍微简单的示例,因为您没有“rowchart3”值的数组,但解决方案仍然适用于您

答案包括一个JSFIDLE,它演示了如何手动管理图表中的类别。你需要改变

function reduceAdd(p, v) {
   if (v.topics[0] === "") return p;    // skip empty values
   v.topics.forEach (function(val, idx) {
      p[val] = (p[val] || 0) + 1; //increment counts
   });
   return p;
}
差不多

function reduceAdd(p, v) {
   if(v.rowhart3a != "")
      p[v.rowchart3a] = (p[v.rowchart3a] || 0) + 1; //increment counts

   if(v.rowhart3b != "")
      p[v.rowchart3b] = (p[v.rowchart3b] || 0) + 1; //increment counts

   if(v.rowhart3c != "")
      p[v.rowchart3c] = (p[v.rowchart3c] || 0) + 1; //increment counts

   return p;
}
我希望这有帮助。
-DJ

嗨,我现在有一个稍微修正的问题,我需要的是rowChart3列中的实际数字,而不是计数。我该如何添加这些内容?此外,如果我没有像链接示例中那样的数组,我将维度设置为什么