-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」ジェムを持っているので、「Time.parse」構文を使用できますが、ジェムを使用せずにこれを行う方法があるかどうか疑問に思います (または、少なくとも「クラック」ジェム以外は何もありません)。

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 に答える