例を使用してやりたいことを説明する方がおそらく簡単です...次のデータフレームがあるとします:
id1 id2 var
1 2 a
2 3 b
2 1 a
3 2 a
2 3 a
4 2 a
3 1 b
次のように生成できます
df <- data.frame(id1 = c(1,2,2,3,2,4,3),
id2 = c(2,3,1,2,3,2,1),
var = c('a','b','a','a','a','a','b'))
id2 が同じ var で id1 に出現した回数の累積カウントが必要なので、最終的には
id1 id2 var count
1 2 a 0
2 3 b 0
2 1 a 1
3 2 a 1
2 3 a 1
4 2 a 2
3 1 b 0
したがって、行 3 (行 1) の前に id1 = 1 と var = 'a' があるため、行 3 のカウントは 1 です。次に、行 4 では、id1 = 2 と var 'a' があるため、カウントも 1 です。行 3 (行 4 の前にのみチェックするため、行 5 に表示されるものは数えないでください)。
id1 が id1 に出現した回数を確認していた場合、次のようにします
with(df, ave(id1 == id1, paste(id1, var), FUN = cumsum))
id2 に対してこれをすばやく簡単に行う方法はありますか?
前もって感謝します