【发布时间】:2013-10-21 09:52:13
【问题描述】:
用一个例子来描述我想做什么可能更容易......假设我有以下数据框:
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第 3 行中的“a”(我们只在第 4 行之前检查,所以不要计算我们在第 5 行中看到的那个)。
如果我检查 id1 在 id1 中出现的次数,我会做类似的事情
with(df, ave(id1 == id1, paste(id1, var), FUN = cumsum))
id2 有没有快速简便的方法?
提前致谢
【问题讨论】: