只是有点坚持这一点 - 我正在寻找帮助我总结$ A值的东西,但只有那些值对应于0和$ B中第一次出现的$。我使用下面的代码来预先计算第一次出现的值,并想知道这是否可以调整?如果不是,我会接受新方法......提前致谢!
$A $C
1 0
1 0
1 1
1 0
1 1
1 0
DT <- data.table(data)
DT[ ,B1 := { bb <- rle(B==1)
r <- bb$values r[r] <- seq_len(sum(r))
bb$values <- r inverse.rle(bb) } ]
DT[B1 == 1, sum(A)]
答案 0 :(得分:1)
试试这个:
DT[ !duplicated(C) | C == 0, sum(A) ]
在评论中,我们真正想要的是A
的总和,包括C
中第一次出现1。在那种情况下:
DT[ seq_len(match(1, C, nomatch = 0)), sum(A) ]
如果保证C
总是至少有一个1,那么nomatch=0
可以省略。