R语言基于value值分组生成唯一ID:组号随value>1切换需求
解决方案
可以通过标记触发条件+累积求和的方式实现需求,核心思路是先标记所有value > 1的位置,再对标记结果做累积求和,最后加上初始组号1即可得到符合要求的分组:
library(dplyr) df.1 <- data.frame(value = c(1, 1, 90, 1, 1, 32, 1, 1, 1)) df.2 <- df.1 %>% mutate(nr.group = cumsum(value > 1) + 1) # 查看结果 df.2
运行后输出与预期一致:
value nr.group 1 1 1 2 1 1 3 90 2 4 1 2 5 1 2 6 32 3 7 1 3 8 1 3 9 1 3
为什么consecutive_id不适用?
consecutive_id()是根据连续相同的元素值生成组ID,会把每一段连续的1和单独的大数值都分成不同组,得到的结果是1,1,2,3,3,4,5,5,5,完全不符合你“遇到大于1的值才变更组号,后续1沿用当前组”的需求。
内容的提问来源于stack exchange,提问作者GrBa
相关产品推荐
相关产品推荐

