オブジェクトがRに累積的に列に表示される回数を数える方法はありますか?Rの累積数R
私が列を持っていると言う:
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
等...ここ
おかげ
オブジェクトがRに累積的に列に表示される回数を数える方法はありますか?Rの累積数R
私が列を持っていると言う:
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
関数は、関数をグループで計算します。私はcumsum
に渡されたときに数値に変換しますすべてのTRUE
値のベクトルを作成するためにid==id
を使用
> 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
をrep(1,length(id))
に置き換えることができます。
はカウントを取得する方法である:
id <- c(1,2,3,2,2,1,2,3)
sapply(1:length(id),function(i)sum(id[i]==id[1:i]))
あなたに与えるもの:
[1] 1 1 1 2 3 2 4 2
私が持っていたデータフレームは大きすぎて、受け入れられた回答がクラッシュし続けました。これは私のために働いた:
library(plyr)
df$ones <- 1
df <- ddply(df, .(id), transform, cumulative_count = cumsum(ones))
df$ones <- NULL
@ user1165199:これはあなたの質問に最もよく答えたら、チェックマークをクリックしてください。 –
これはエースです。これをdata.tableオブジェクトに束縛することも簡単です。 – DaveRGP