我有一个像这样的数据帧
val1 val2 val3 val4 val5 val6 diff 4 0 0 2 3 0 3 0 1 1 0 2 0 4
对于每一行,我希望开始按列1+ diff计数,并获得大于0的值的计数。因此,第1行的结果将是从第3列开始的计数值大于0,这是2。第2行的结果将是从第4列开始的值大于0的计数值,即1。
解决这一问题的最佳方法是什么?
发布于 2019-11-15 09:55:53
下面是一个选项,我们将基于'diff‘列的值replace
为NA
,并获取值大于0的rowSums
rowSums(replace(df1[-ncol(df1)], col(df1[-ncol(df1)])
<= df1$diff, NA) > 0, na.rm = TRUE)
#[1] 2 1
或者另一个选择是apply
apply(df1, 1, function(x) sum(seq_along(x) > x['diff'] & x > 0)-1)
#[1] 2 1
数据
df1 <- structure(list(val1 = c(4L, 0L), val2 = 0:1, val3 = 0:1, val4 = c(2L,
0L), val5 = 3:2, val6 = c(0L, 0L), diff = 3:4),
class = "data.frame", row.names = c(NA,
-2L))
https://stackoverflow.com/questions/58882300
复制相似问题