伯爵和平均在D3中进行多级嵌套

时间:2016-05-30 17:41:34

标签: arrays json d3.js multidimensional-array

我正在构建一个表,我正在尝试在新列中添加一些计算值。我在这里复制了一个示例数据:http://bl.ocks.org/simonbreton/dbb04f0d8123bc41fcb231497a276848

我想计算每个超级英雄的平均每日救援人数。我从以下代码开始:

avgdailyrescue = d3.nest()
  .key(function(d) { return d.name; })
  .key(function(d) { return d.day;})
  .rollup(function(v) { return {
    count: v.length,
  }; })
  .entries(data);
console.log(JSON.stringify(avgdailyrescue));

所以我得到了这个结果:

[{"key":"batman","values":[{"key":"monday","values":{"count":1}}, {"key":"tuesday","values":{"count":2}}]},
{"key":"superman","values":[{"key":"friday","values":{"count":1}},{"key":"saturday","values":{"count":1}},{"key":"sunday","values":{"count":2}}]},
{"key":"ironman","values":[{"key":"sunday","values":{"count":2}},{"key":"wednesday","values":{"count":1}},{"key":"friday","values":{"count":1}},{"key":"monday","values":{"count":1}}]},
{"key":"Antman","values":[{"key":"monday","values":{"count":1}}]}]

但我真的不知道下一步该做什么......任何想法,任何帮助?

1 个答案:

答案 0 :(得分:0)

你开了个好头。您只需要总计每天的总数,然后除以您已有的计数:

var avgdailyrescue = d3.nest()
    .key(function(d) { return d.name })
    .key(function(d) { return d.day })
    .rollup(function(byDay) {
        var count = byDay.length;
        var total = d3.sum(byDay, function(d) { return d.rescue })
        return total/count;
    })
    .entries(data)