各値が表示される回数の累積カウンターを作成したいと考えています。
たとえば、次の列があるとします。
id
1
2
3
2
2
1
2
3
これは次のようになります。
id count
1 1
2 1
3 1
2 2
2 3
1 2
2 4
3 2
等...
ありがとう
各値が表示される回数の累積カウンターを作成したいと考えています。
たとえば、次の列があるとします。
id
1
2
3
2
2
1
2
3
これは次のようになります。
id count
1 1
2 1
3 1
2 2
2 3
1 2
2 4
3 2
等...
ありがとう
関数は、グループごとにave
関数を計算します。
> id <- c(1,2,3,2,2,1,2,3)
> data.frame(id,count=ave(id==id, id, FUN=cumsum))
id count
1 1 1
2 2 1
3 3 1
4 2 2
5 2 3
6 1 2
7 2 4
8 3 2
私id==id
はすべてのTRUE
値のベクトルを作成するために使用します。これらのベクトルは、に渡されると数値に変換されますcumsum
。に置き換えることができid==id
ますrep(1,length(id))
。
私が持っていたデータフレームが大きすぎて、受け入れられた答えがクラッシュし続けました。これは私のために働いた:
library(plyr)
df$ones <- 1
df <- ddply(df, .(id), transform, cumulative_count = cumsum(ones))
df$ones <- NULL