如何在达到另一列的条件之前添加一列的值?

时间:2015-11-17 21:15:24

标签: r

我有一个像这样的矩阵:

m <- matrix(c(1,2,1,1,3,1,1,0,0,0,1,1,0,1), ncol = 2,
             dimnames = list(NULL, c('var', 'tp')))
     var  tp
[1,]   1  0
[2,]   2  0
[3,]   1  0
[4,]   1  1
[5,]   3  1
[6,]   1  0
[7,]   1  1
etc.

我想总结var的所有行,直到tp变为1,然后打印结果并停止。在这个例子中,这意味着总结前四行。

我如何在R中这样做?

2 个答案:

答案 0 :(得分:0)

您可以使用cumsum函数来识别tp在哪一行变为1,然后找到与之对应的行,并将此变量加到此点

 sum(X[1:min(which(cumsum(m[,2])==1)),1])

答案 1 :(得分:0)

另一种选择:

var