-4

这是我在 CSV 文件中的一个简单示例:

"1","January 3, 2012"
"2","January 3, 2012"
"3","May 4, 2012"
"4","May 4, 2012"
"5","May 4, 2012"
"6","June 8, 2012"
"7","June 9, 2012"
"9","June 10, 2012"
"10","July 4, 2012"
"11","July 4, 2012"
"12","August 18, 2012"

我希望我的输出具有每个日期的平均值(例如,2012 年 1 月 3 日的平均值是 1.5)。

我有 'crack' gem,所以我可以使用 'Time.parse' 语法,但我想知道是否有办法在不使用任何 gem 的情况下做到这一点(或者至少,只不过是 'crack' gem)。

4

2 回答 2

2

我会构建一个数组散列,其中散列的键是日期字符串,值是值的数组。

然后你会得到一个看起来像的结构

{
  "January 3, 2012" => ["1", "2"],
  "May 4, 2012"     => ["3", "4", "5"],
  "June 8, 2012"    => ["6", "7"]
  ...
}

然后,您将遍历散列中的每个键值对

output = {}
input.each do |key, value|
  output[key] = value.map(&:to_i).inject(0.0, :+) / value.length
end
于 2012-06-14T21:58:58.183 回答
0

好吧,简单的 CSV 解析+以日期作为键的哈希结构中的值的总和和计数就可以了。

但是这种“发布你的代码我会选择最好的”的态度在 SO 上并不受欢迎。

于 2012-06-14T21:58:41.583 回答