[英]Javascript calculate average after groupement
我正在使用crossfilter和dc.js來制作儀表板。
我有的 ?
讓我們考慮這些文件:
{
"Mkt_Al": "AZA",
"Orig" : "PTH",
"Dest" : "GMP",
"Qsi" : 2
}
{
"Mkt_Al": "AZA", // here the same triplet
"Orig" : "PTH",
"Dest" : "GMP",
"Qsi" : 3
}
{
"Mkt_Al": "AZA", // here the same triplet
"Orig" : "PTH",
"Dest" : "GMP",
"Qsi" : 4
}
我想要的是 ?
我應該按三元組( Mkt_Al
, Orig
, Dest
)對文檔進行Mkt_Al
,然后計算該組中Qsi
的平均值。
{
"Mkt_Al" : "AZA",
"Orig" : "PTH",
"Dest" : "GMP",
"Qsi" : 2,
"Avg_Qsi" : 3
}
{
"Mkt_Al" : "AZA", // here the same triplet
"Orig" : "PTH",
"Dest" : "GMP",
"Qsi" : 3,
"Avg_Qsi" : 3
}
{
"Mkt_Al" : "AZA", // here the same triplet
"Orig" : "PTH",
"Dest" : "GMP",
"Qsi" : 4,
"Avg_Qsi" : 3
}
怎么做 ?
我有一個dataSet
,並使用dc.js datatable
嘗試繪制一個數據表,其中的一列將計為該平均值:
{
label: 'Average Qsi in this route',
format: function (d)
{
var total=0,avg=d.Qsi;
for (var i = 0; i < dataSet.length; i++)
{
if (dataSet[i].Mkt_Al == d.Mkt_Al
&& dataSet[i].Orig == d.Orig
&& dataSet[i].Dest == d.Dest)
{ total = total+1; avg=(avg+dataSet[i].Qsi/total); }
}
return avg;
}
}
請問我如何實現以上目標?
我離結果很近:
{
label: 'Average Qsi in this route',
format: function (d)
{
var total=0,qsi=0; // our counters
for (var i = 0; i < dataSet.length; i++)
{
if (dataSet[i].Mkt_Al == d.Mkt_Al
&& dataSet[i].Orig == d.Orig
&& dataSet[i].Dest == d.Dest)
{ total++ ; qsi =dataSet[i].Qsi+qsi; } // here total calculate the number of flights with these condition and qsi calculate the sum of documents's qsi which verify these results
}
return (qsi/total).toFixed(3);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.