dc.js - 如何获取数据集中列的平均值

use*_*082 3 javascript d3.js crossfilter dc.js

我有以下数据.

col1    col2    value
a   01/01/14    10
a   01/01/14    35
a   01/01/14    68
a   01/01/14    21
a   01/01/14    24
b   01/01/14    26
b   01/01/14    35
b   01/01/14    39
b   01/01/14    87
c   01/01/14    25
c   01/01/14    63
c   01/01/14    11
c   01/01/14    25
c   01/01/14    35

如果我想取col1的总和.我可以通过使用来做到这一点col1Dim.group().reduceSum(function(d) { return d.value }).如果我需要计数,我可以用计数替换总和.

但是我在这里寻找平均值.那就是那个.我需要得到col1和col1的总和.

任何想法我如何划分和获得平均值?

请帮忙.坚持了将近3天.

dav*_*inn 15

您需要使用group.reduce(add,remove,initial)方法,如:

var col1DimTotal = col1Dim.group().reduce(reduceAdd, reduceRemove, reduceInitial);

function reduceAdd(p, v) {
  ++p.count;
  p.total += v.value;
  return p;
}

function reduceRemove(p, v) {
  --p.count;
  p.total -= v.value;
  return p;
}

function reduceInitial() {
  return {count: 0, total: 0};
}
Run Code Online (Sandbox Code Playgroud)

因为您使用的是dc.js,所以您需要使用chart.valueAccessor方法来使用图表中的平均值,例如:

chart.valueAccessor(function(p) { return p.value.count > 0 ? p.value.total / p.value.count : 0; });
Run Code Online (Sandbox Code Playgroud)