R中按行连续数值对data frame进行分组的实现方法
R 按连续数值列生成分组列的实现方法
首先构造示例数据:
library(tidyverse) df <- tibble(time = c(1,2,3,4,5,10,11,20,30,31,32,40))
tidyverse 实现方案
核心逻辑是计算相邻行的数值差,差值不等于1的位置即为新分组的起点,累加标识即可得到分组编号:
df <- df %>% mutate(group = cumsum(c(1, diff(time) != 1)))
base R 实现方案
逻辑和tidyverse方案一致,直接对列操作即可:
df$group <- cumsum(c(1, diff(df$time) != 1))
两种方法得到的结果完全符合需求,输出如下:
# A tibble: 12 × 2 time group <dbl> <dbl> 1 1 1 2 2 1 3 3 1 4 4 1 5 5 1 6 10 2 7 11 2 8 20 3 9 30 4 10 31 4 11 32 4 12 40 5
内容的提问来源于stack exchange,提问作者Ilproff_77
相关产品推荐
相关产品推荐

