被困在这上面一段时间了。
对于每一行,我都试图对所有大于0的值进行跨列计数。但要注意的是,我需要使用另一列中每行的特定值指定开始计数的起始列。
例如,该表如下所示:
ID | StartWeek | 1 | 2 | 3 |
123 2 3 0 1
456 1 1 0 1预期产出将如下所示:
ID | StartWeek | 1 | 2 | 3 | CountRow |
123 2 3 0 1 1
456 1 1 0 1 2我试过这样的方法:
df <- df %>%
mutate(CountRow = rowSums(.[StartWeek:5] > 0))但是它只是给出了整个列,而不是每一行的单个值。我想我读到了一个使用groupby()的潜在解决方案,但是会不会有另一种方法来做到这一点,只需访问每一行特定的值,而不是调用整个列。
发布于 2021-03-11 02:04:10
对于每一行,我们可以计算StartWeek之后有多少值大于0。在dplyr中,我们可以使用rowwise:
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 2https://stackoverflow.com/questions/66575176
复制相似问题