R中的条件求和

时间:2014-04-09 12:15:20

标签: r sum conditional

只是有点坚持这一点 - 我正在寻找帮助我总结$ 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)]

1 个答案:

答案 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可以省略。