使用示例来描述我想要做什么可能更容易......假设我有以下数据框:
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 出现在 id1 中具有相同 var 的次数的累积计数,所以我最终会得到
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,因为我们在第 3 行(第 1 行)之前看到一次 id1 = 1 和 var = 'a',然后在第 4 行,计数也是 1,因为我们看到 id1 = 2 和 var 'a'在第 3 行(我们只在第 4 行之前检查,所以不要计算我们在第 5 行看到的那个)。
如果我检查 id1 出现在 id1 中的次数,我会做类似的事情
with(df, ave(id1 == id1, paste(id1, var), FUN = cumsum))
有没有一种快速简便的方法来为 id2 执行此操作?
提前致谢