我正在使用 dc.js 和 crossfilter 从 csv 创建 3 个行图。前两个是直截了当的,但第三个需要将维度设置为我的输入 csv 的多列,所以我重组了数据,以便对于该行的每个必需列(存在值),一个新的重复行使用在新列下输入的列值创建。见下文;
旧结构:
ID --- rowchart1 --- rowchart2 ---- rowchart3 ----- rowchart3 ----- rowchart3 -----
1
2
3
新结构:
ID --- rowchart1 --- rowchart2 ---- newRowchart3
1
2
2
2
3
3
一切正常,因为我能够将行图设置为这个新构建的列,但我无法让原始计数显示在其他两个列中。实际上,我在那些其他行图表中得到了重复计数。
有没有一种方法可以按唯一 ID 进行分组,这样它只计算这些唯一 ID 而不是每行计数?
非常感谢
最佳答案
您的示例是一个稍微简单的示例,因为您没有“rowchart3”值的数组,但该解决方案仍然适用于您。
答案包括一个演示如何手动管理图表中类别的 jsfiddle。你需要改变
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
关于javascript - dc.js - 如何按唯一 ID 分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24791496/