簡體   English   中英

在由另一個值分組的哈希數組中找到平均值的有效方法

[英]Efficient way to find average of values in an array of hashes grouping by another value

我正在使用一些 API 調用來收集一些數據。 現在我有這個數據

data = [
  {:energyCons=>0.64, :energyCons100=>64, :energyClass=>"B"},
  {:energyCons=>0.64, :energyCons100=>64, :energyClass=>"B"},
  {:energyCons=>0.64, :energyCons100=>64, :energyClass=>"B"},
  {:energyCons=>0.64, :energyCons100=>64, :energyClass=>"B"},
  {:energyCons=>0.64, :energyCons100=>64, :energyClass=>"B"}
]

我需要按energyClass ,然后得到energyConsenergyCons100的平均值

基本上,我需要一個簡單的數組

["B": {energyCons: 0.74, energyCons100: 82}, "C": {energyCons: 0.74, energyCons100: 82}.... ]

其中關鍵是能量 class I 組,值是具有兩個平均值的 hash。

我可以做到這一點,但只能使用多個循環,有什么緊湊的方法嗎?

您可以先按每個元素的energyClass值對data進行分組,然后進行適當的計算;

data
  .group_by { |d| d[:energyClass] }
  .transform_values do |values|
    {
      energyCons: values.sum { |v| v[:energyCons] } / values.size,
      energyCons100: values.sum { |v| v[:energyCons100] } / values.size
    }
  end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM