R/dplyr如何实现列最大值逐行统计,遇到1时自动重置计算
R/dplyr 实现方案
核心思路
通过自定义分组实现重置统计:每次counter列出现值1时生成新的分组,统计每个分组内counter的最大值,将最大值赋值给分组内的所有行即可。
完整实现代码
首先加载依赖包:
library(dplyr)
构造示例数据(如果已有数据可跳过这一步):
data <- tibble( counter = c(1, 2, 3, 1, 1, 2, 3, 4, 5, 6) )
核心处理逻辑:
result <- data %>% # 生成分组ID:每遇到1次counter=1,分组号+1 mutate(group_id = cumsum(counter == 1)) %>% # 按自定义分组分组 group_by(group_id) %>% # 每个分组内取counter的最大值作为new_column mutate(new_column = max(counter)) %>% # 取消分组 ungroup() %>% # 可选:删除不需要的分组ID列 select(-group_id)
输出验证
运行上述代码后result的输出如下,和预期完全一致:
# A tibble: 10 × 2 counter new_column <dbl> <dbl> 1 1 3 2 2 3 3 3 3 4 1 1 5 1 6 6 2 6 7 3 6 8 4 6 9 5 6 10 6 6
内容的提问来源于stack exchange,提问作者tuan gou
相关产品推荐
相关产品推荐

