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

如何在R的data.table中按loc.id分组插入指定新行?

嘿,这个需求用data.table的分组特性就能轻松实现,我给你写个清晰的解决方案:

步骤分解

  1. 生成需要插入的新行:按loc.id分组,计算每个组的month最小值减1、最大值加1,生成对应的两行数据
  2. 合并原数据与新行:把生成的新行和原始数据合并
  3. 可选排序:按loc.id和month排序,让结果更整洁

完整代码

library(data.table)

# 你的原始数据
df <- data.table(loc.id = c(22,22,23,23,23,24,24,24,25,25,25,27,27,27,27), 
                 month = c(1,4,12,10,7,4,3,11,2,3,4,1,5,12,1))

# 1. 生成每个loc.id需要插入的两行数据
new_rows <- df[, .(month = c(min(month)-1, max(month)+1)), by = loc.id]

# 2. 合并原数据和新行
result_df <- rbind(df, new_rows)

# 3. 按loc.id和month排序(可选,让结果更易读)
result_df <- result_df[order(loc.id, month)]

# 查看结果
print(result_df)

结果说明

运行后你会看到每个loc.id都新增了两行:

  • 比如loc.id=22,原month是1和4,新增了0(1-1)和5(4+1)
  • loc.id=27,原month的最小值是1、最大值是12,新增了0和13

这个方法利用了data.table高效的分组计算,不管数据量多大都能快速处理~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:59:18