You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何为数据框中连续整数段添加带唯一编号的新列

R实现按连续整数序列生成分组编号

需求说明

现有数据框df包含整数列x,需新增列y实现如下规则:

  • 相邻行的x值为连续整数时,对应行的y取相同分组编号
  • 相邻值不连续时,新的连续段分配递增的新编号

示例数据构造代码:

df = data.frame(x = c(1, 3, 4, 7, 8, 9))

期望输出结果:

x y
1 1 1
2 3 2
3 4 2
4 7 3
5 8 3
6 9 3

实现代码(Base R原生方案,无第三方依赖)

df$y <- cumsum(c(1, diff(df$x) != 1))

运行代码后可直接得到和期望完全一致的结果。

逻辑说明

  • diff(df$x):计算x列相邻元素的差值,返回长度比原列少1的向量,本例中计算结果为2,1,3,1,1
  • diff(df$x) != 1:判断相邻值是否不连续,返回布尔向量,TRUE代表当前位置是新连续段的起点,本例计算结果为TRUE, FALSE, TRUE, FALSE, FALSE
  • 向量首位补1:因为第一行必然是第一个分组的起点,补位后向量长度和原数据框行数一致
  • cumsum():对布尔向量累加(R中TRUE等价于数值1,FALSE等价于数值0),累加结果就是连续递增的分组编号

注意事项

如果原始数据的x列未按升序排列,先执行排序再计算即可,避免分组错误:

df <- df[order(df$x), ]
df$y <- cumsum(c(1, diff(df$x) != 1))

内容的提问来源于stack exchange,提问作者bird

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 21:12:20