【发布时间】:2017-03-30 10:37:35
【问题描述】:
在data.table(或data.frame)中,我如何“累计”地计算这种情况连续发生了多少次?
为了说明,
DT <- data.table(A=c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
B=c(1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1))
如果我想添加一列 C 来表示
如果 (A==B),则将当前行上方的值加 1。
如果 (A!=B),从 0 重新开始
所以答案是
DT <- data.table(A=c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
B=c(1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1),
C=c(1, 0, 1, 2, 0, 1, 2, 3, 0, 1, 2, 3, 4, 0, 1)]
这似乎很简单,但我似乎做不到。我猜它可以建立在这样的基础上?
DT[,C:=ifelse(A==B, ??, 0)]
另外,我担心这可能是一个重复的问题,但找不到它。
【问题讨论】:
标签: r dataframe data.table cumsum