2016-05-25 4 views
2

У меня есть данные с длинным форматом, например, следующие.Выполнение гистограммы DCJS на основе рассчитанного среднего значения

year company value 
2001 AAAAAAA 200 
2002 AAAAAAA 300 
2003 AAAAAAA 400 
2001 BBBBBBB 150 
2002 BBBBBBB 250 
2000 CCCCCCC 500 
2001 CCCCCCC 600 
2002 CCCCCCC 550 

Можно ли рассчитать average из income каждого company, а затем сделать гистограмму вычисленной average на dc.js?

Что я первый сделал, так это сделать измерение по company и рассчитать среднее значение, а затем попытался сделать average как key.

Проблема, с которой я столкнулся, заключалась в том, что если вы попытаетесь сделать из нее гистограмму, то вы должны указать reduceCount на размер average. Но, конечно, average не существует на объекте crossfilter.

Это мой сценарий jsfiddle.
http://jsfiddle.net/adamist521/n1383zdk/3/
Окончательное изображение графика также включено в скрипт.

Возможно, это связано с этим, но не могло понять, как бороться с нецелым средним.
DC.js histogram of crossfilter dimension counts

ответ

1

Чтобы вычислить текущее среднее значение (Crossfilter - это текущие вычисления), вам нужно отслеживать как сумму, так и количество. Как только у вас есть это, вычисление среднего тривиально. Фактически, вы не должны вычислять средние значения в Crossfilter вообще, а просто отслеживать компоненты. Для этого вам нужно использовать настраиваемую группу для отслеживания как количества, так и суммы в той же группе.

Существует пример именно такой пользовательской группы в документации Crossfilter по адресу: https://github.com/crossfilter/crossfilter/wiki/API-Reference#group_order

В вашем dc.js графике, вы бы затем определить valueAccessor, чтобы вычислить среднее по времени показа:

chart. 
    ... 
    .valueAccessor(function(d){ return d.value.total/d.value.count; }) 
+0

Что будет «ключом»? Я хочу сделать гистограмму в среднем ... ex. X-Axis: средний (450, 500, 550, ...), Y-Axis: count (10, 20, 30, ...) – adamist521

+1

Если вы хотите сделать гистограмму в среднем по каждой записи, (в том числе среднее по вашим записям или использование аксессуаров измерения, которое вычисляет среднее значение). –