2016-06-30 3 views
0

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?

Antwort

0

Ich war sehr in der Nähe von dem Ergebnis:

{ 
       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); 
    } 
} 
Verwandte Themen