【问题标题】:Javascript calculate average after groupementJavascript在分组后计算平均值
【发布时间】:2016-06-30 00:09:58
【问题描述】:

我正在与crossfilterdc.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_AlOrigDest)对文档进行分组,然后我应该计算该组中 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;
    }
 }

请问我怎样才能实现上述?

【问题讨论】:

    标签: javascript average dc.js crossfilter


    【解决方案1】:

    我离结果很近:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-09
      • 1970-01-01
      • 1970-01-01
      • 2021-12-27
      • 1970-01-01
      • 2017-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多