2011-01-28 26 views
1

でアイテムを数えるなどRubyは私が日付の配列を持っている日付

Fri Jan 28 10:13:19 UTC 2011 
Thu Jan 27 16:57:59 UTC 2011 
Thu Jan 27 16:41:21 UTC 2011 
Wed Jan 26 09:20:48 UTC 2011 
Mon Jan 24 16:19:48 UTC 2011 
Fri Jan 21 11:45:34 UTC 2011 
Fri Jan 21 11:42:19 UTC 2011 

項目のカウント毎日とハッシュとして出力されているので、どのようにグループ化することができます:

Friday 28 => 1 
Thursday 27 => 2 
Wednesday 26 => 1 
Monday 24 => 1 
Friday 21 => 2 
+0

あなたの出力ハッシュ上記のようにして、具体的日またはタイムスタンプによってグループ化するために探していますか? – Jimmy

+0

特に、ありがとう – Tom

答えて

1

あるいは、より冗長くるみのソリューションを置くとジミーさんはstrftimeを使用して:

histogram = dates.inject(Hash.new(0)) do |hist, date| 
    hist[date.strftime('%A %d')] += 1 
    hist 
end.sort_by{|date, count| date.split(' ').last}.reverse 

は、私たちを与える:

Friday 28: 1 
Thursday 27: 2 
Wednesday 26: 1 
Monday 24: 1 
Friday 21: 2 

OKを?

1
@things.group_by {|thing| thing.strftime "%A %d" }.each do |key, group| 
    puts "#{key} => #{group.size}" 
end 

%Aは完全な曜日名と%dであることは、月の日です

私は現在、これをテストすることはできませんが、私はそれがうまくいくと思います

1
s=a.inject(Hash.new(0)) do |h,y| 
    z=y.split 
    h[ z[0]+z[2] ]+=1 
    h 
end 
関連する問題