首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据另一列中的值使用特定起始列对列进行r行计数。

根据另一列中的值使用特定起始列对列进行r行计数。
EN

Stack Overflow用户
提问于 2021-03-11 01:19:30
回答 1查看 422关注 0票数 0

被困在这上面一段时间了。

对于每一行,我都试图对所有大于0的值进行跨列计数。但要注意的是,我需要使用另一列中每行的特定值指定开始计数的起始列。

例如,该表如下所示:

代码语言:javascript
运行
复制
ID      |     StartWeek     |     1     |     2     |     3     |
123             2                 3           0           1
456             1                 1           0           1

预期产出将如下所示:

代码语言:javascript
运行
复制
ID      |     StartWeek     |     1     |     2     |     3     |   CountRow   |
123             2                 3           0           1           1
456             1                 1           0           1           2

我试过这样的方法:

代码语言:javascript
运行
复制
df <- df %>%
mutate(CountRow = rowSums(.[StartWeek:5] > 0))

但是它只是给出了整个列,而不是每一行的单个值。我想我读到了一个使用groupby()的潜在解决方案,但是会不会有另一种方法来做到这一点,只需访问每一行特定的值,而不是调用整个列。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-11 02:04:10

对于每一行,我们可以计算StartWeek之后有多少值大于0。在dplyr中,我们可以使用rowwise

代码语言:javascript
运行
复制
library(dplyr)

df %>%
  rowwise() %>%
  mutate(CountRow = { tmp <- c_across(`1`:`3`);
                      sum(tmp[StartWeek:length(tmp)] > 0)
                    })

#   ID    StartWeek   `1`   `2`   `3` CountRow
#  <int>     <int> <int> <int> <int>    <int>
#1   123         2     3     0     1        1
#2   456         1     1     0     1        2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66575176

复制
相关文章

相似问题

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