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

如何使用R data.table为每个ID的日期生成顺序编号列

用data.table实现按ID分组的日期序号标记

嗨,这个需求用data.table的分组功能就能轻松搞定!咱们一步步来:

首先,先确保你的日期列是日期类型(原始数据里的Date1是字符串,虽然示例里顺序是对的,但规范转换后排序更靠谱):

library(data.table)
data = data.table( 
  id = c(1,1,1,2,2,3), 
  Row = c(1,2,3,4,5,6), 
  Date1 = c("2018-01-01", "2018-01-05", "2018-01-21", "2018-02-01", "2018-03-15", "2018-04-01")
)
# 转换日期列
data[, Date1 := as.Date(Date1)]

接下来,按id分组,给每个组内生成从1开始的递增序号。这里用到data.table的by参数分组,还有.N(代表每个组的行数):

# 先按id和Date1排序,确保序号是按日期先后生成的
data <- data[order(id, Date1)]
# 新增Seq列,每个组内生成1到.N的序列
data[, Seq := seq_len(.N), by = id]

运行完上面的代码后,你的data就会新增一列Seq,取值正好是你想要的1,2,3,1,2,1:

id Row      Date1 Seq
1:  1   1 2018-01-01   1
2:  1   2 2018-01-05   2
3:  1   3 2018-01-21   3
4:  2   4 2018-02-01   1
5:  2   5 2018-03-15   2
6:  3   6 2018-04-01   1

简单解释下:seq_len(.N)会为每个分组生成从1到该组总行数的连续整数,完美匹配你要的“首个Date标记1,第二个标记2”的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 21:42:48