2011-01-28 98 views
1

我有一系列的日期,例如紅寶石按日期統計項目

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 2011-01-28 14:12:21

回答

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