簡體   English   中英

紅寶石哈希中嵌入的平均值

[英]averaging values embedded in ruby hash

我有一個嵌入式哈希,需要為此計算平均值。 我已經成功地對它們進行了分組(未分組),但是發現平均值對我不起作用

這是示例哈希數據

myhash = {"2011-02-15"=>[["2011-02-15", 10], ["2011-02-15", 60]], 
          "2011-02-22"=>[["2011-02-22", 22]], 
          "2011-02-28"=>[["2011-02-28", 110],["2011-02-28", 70]]}

這是我對它們進行分組的方式(它們以前只是{k => v}未分組)

@r = @myhash.group_by(&:first)

我從該線程嘗試了兩種解決方案( Ruby中對數組中的集合進行平均的最佳方法是什么? ),但均無濟於事。

好問題。 我希望按日期對結果進行平均,這樣我就可以為它們提供服務。

[{"2012-02-15" => 35"}, {"2012-02-22" => 22"}, {"2012-02-28" => 90"}]
Hash[myhash.map { |k,v| [k, v.map(&:last).inject(:+) / v.size] }]
#=> {"2011-02-15"=>35, "2011-02-22"=>22, "2011-02-28"=>90}

在rails中, Array類具有sum方法。 您可以按以下方式使用它:

方法1

{}.tap{ |h| myhash.each{ |date, list| h[date] = list.sum(&:last)/list.size}

方法2

Hash[myhash.map{ |date, list| [date, list.sum(&:last)/list.size] }]

暫無
暫無

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

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