Ich arbeite mit crossfilter und dc.js, um ein Dashboard zu machen.Javascript berechnen Durchschnitt nach Gruppierung
Was habe ich?
Lasst uns diese Dokumente betrachten:
{
"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
}
Was will ich?
ich sollte Gruppendokumente durch das Triplett (Mkt_Al
, Orig
, Dest
), dann sollte ich den Durchschnitt der Qsi
in dieser Gruppe berechnen.
{
"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
}
Wie geht das?
Ich habe ein dataSet
und mit dc.jsdatatable
Ich habe versucht, eine Datentabelle mit einer Spalte zu ziehen, die diesen Mittelwert countain wird:
{
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;
}
}
Bitte wie kann ich die oben erreichen?