2012-05-03 90 views
3

我對形式的data.frame:計數頻率日期

Date 
2011-08-16 
2011-08-17 
2011-08-28 
2011-09-01 
2011-09-05 
2011-09-06 
2011-10-01 
2011-10-02 
2011-10-03 
2011-10-04 

我想要做的是,當日期的順序產生,即它們並排坐持續計數。

在上面的例子中,我們將有2,1,1,2,4

回答

5

如何:

做重複的例子,數據:

dat <- read.table(text = "2011-08-16 
2011-08-17 
2011-08-28 
2011-09-01 
2011-09-05 
2011-09-06 
2011-10-01 
2011-10-02 
2011-10-03 
2011-10-04") 

獲取的運行計數連續日期使用rle,以下this answerthis answer

(rle (cumsum(c(0, diff(as.Date(dat$V1)) > 1))))$lengths 
[1] 2 1 1 2 4 
+0

謝謝。不知道差異!雖然你不需要cumsum。 – Dave

+0

@davewolfs我不確定你的意思是不需要'cumsum'。如果我這樣離開它:'(rle((c(0,diff(as.Date(dat $ V1))> 1))))$ lengths'然後我得到與你想要的不同的東西:'[1 ] 2 3 1 1 3' – Ben

+0

'runs < - rle(c(1,diff(as.Date(dat $ $ Date))> 1)) table(runs $ lengths [runs $ values == 0])' – Dave