如何在R语言中按组统计列中指定值的累计出现次数?偏好dplyr方案
解决方案(dplyr实现)
可以通过按id分组后,结合cumsum()和简单数值运算实现需求,代码如下:
library(dplyr) df <- data.frame(id = c("1", "1", "1", "1", "2", "2", "2"), x = c(0, 1, 0, 1, 0, 1, 0)) result <- df %>% group_by(id) %>% mutate(count = cumsum(x) * x) %>% ungroup() print(result)
代码说明
group_by(id):将数据按id分组,确保累计统计仅在单个id范围内进行,不会跨id计算mutate(count = cumsum(x) * x):cumsum(x)逐行计算当前及之前所有行中x=1的累计出现次数- 乘以
x后,x=0的行结果自动转为0,x=1的行保留累计次数,完全匹配需求输出格式
ungroup():取消分组状态,避免后续操作受分组限制(若后续无需分组操作可省略)
运行后输出结果:
# A tibble: 7 × 3 id x count <chr> <dbl> <dbl> 1 1 0 0 2 1 1 1 3 1 0 0 4 1 1 2 5 2 0 0 6 2 1 1 7 2 0 0
内容的提问来源于stack exchange,提问作者aerw4
相关产品推荐
相关产品推荐

