如何在Ruby中找到给定时间段内一组数字的平均值(特别是在csv文件中)?

如何在Ruby中找到给定时间段内一组数字的平均值(特别是在csv文件中)?,ruby,csv,Ruby,Csv,以下是我的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" 我希望我的输出具有每

以下是我的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


我有“破解”gem,所以我可以使用“Time.parse”语法,尽管我想知道是否有一种方法可以不用使用任何gem或者至少只使用“破解”gem就可以做到这一点。

好吧,简单的CSV解析+将值的总和和计数存储在类似哈希的结构中,并将日期作为键就可以了


但是这种“发布你的代码,我会选择最好的”的态度在这里并不受欢迎。因此,我会构建一个数组散列,其中散列的键是日期字符串,值是值数组

然后,您将得到一个如下所示的结构

{
  "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

你有没有一些代码显示你试图回答这个问题?当然,你可以不用gems来回答,特别是如果保证输入是正常的。拆分,创建自己的日期,将数字放入散列,计算平均值。到目前为止你都尝试了什么?我可能会使用f和arg注射,但我就是这样。这种方式可能会更明显地浮动。是的,这段代码似乎工作得很好。谢谢你的帮助。如果你能接受答案,那么其他人也会得到帮助。啊,很抱歉。我本不打算这么说,但我可以理解它是如何被解读的。