首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据输入在R的每一行中选择不同的列,并在每一行中计数大于0的值

根据输入在R的每一行中选择不同的列,并在每一行中计数大于0的值
EN

Stack Overflow用户
提问于 2019-11-15 17:51:19
回答 1查看 80关注 0票数 0

我有一个像这样的数据帧

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。

解决这一问题的最佳方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-15 17:55:53

下面是一个选项,我们将基于'diff‘列的值replaceNA,并获取值大于0的rowSums

代码语言:javascript
复制
rowSums(replace(df1[-ncol(df1)], col(df1[-ncol(df1)])
          <= df1$diff, NA) > 0, na.rm = TRUE)
#[1] 2 1

或者另一个选择是apply

代码语言:javascript
复制
apply(df1, 1, function(x)  sum(seq_along(x) >  x['diff'] & x > 0)-1)
#[1] 2 1

数据

代码语言:javascript
复制
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))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58882300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档