2012-05-03 13 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") 

の実行回数を取得:再生可能なデータ例が作る

は、 this answerthis answerrleを使用して、連続した日付:

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

ありがとう。 diffについて知りませんでした!あなたはこれのためにcumsumは必要ありません。 – Dave

+0

@davewolfs私はあなたが 'cumsum'を必要としないことについて何を意味するのか分かりません。 '(1)($(1))$)')$ length'その後、私はあなたが望むものと違う何かを得る: '[1 ] 2 3 1 1 3 ' – Ben

+0

'が実行されます。($([$ values == 0]を実行します) ' ' – Dave