2

私はこのような小さなベクトルをたくさん持っています:

 id<-c(2,2,5,2,1,9,4,4,3,9,5,5)

これまでの各 ID の累積出現回数を持つ、同じ長さの別のベクトルを作成したいと考えています。上記の例のデータの場合、これは次のようになります。

> id.count
 [1] 1 2 1 3 1 1 1 2 1 2 2 3

これを簡単に行う関数を見つけることができません。おそらく、私が実際に望んでいることを言葉で完全に明確にする方法を本当に知らないためです (したがって、少し厄介な質問のタイトルです)。助言がありますか?

4

2 に答える 2

7

別の方法は次のとおりです。

ave(id,id,FUN=seq_along)

与えます:

 [1] 1 2 1 3 1 1 1 2 1 2 2 3
于 2012-09-27T09:02:38.927 に答える
3
> sapply(1:length(id), function(i) sum(id[1:i] == id[i]))
 [1] 1 2 1 3 1 1 1 2 1 2 2 3

または、NAs があるid場合は、代わりに使用する必要がありますid[1:i] %in% id[i]

于 2012-09-27T08:45:21.850 に答える