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

如何在R中为长格式数据集的col列rec值按id添加递增下标后缀

R实现分组为rec列添加顺序下标方案

现有待处理的长格式数据集无缺失值,共4列:id、col、二分类变量vol、时间列time,需求为按id分组后,将col列的rec值依次改写为rec1、rec2、rec3……的带下标格式。

实现方案

方案1:tidyverse生态(dplyr)实现

适合习惯tidyverse语法的用户,逻辑直观易读:

# 加载dplyr包
library(dplyr)

df <- df %>%
  # 按id分组
  group_by(id) %>%
  # 生成组内行序号,拼接为新的col值
  mutate(col = paste0("rec", row_number())) %>%
  # 取消分组
  ungroup()

注:原始数据集已按id+time升序排列,row_number()直接按原有行顺序生成组内序号,完全匹配预期输出逻辑。

方案2:基础R实现

无需加载第三方包,轻量高效:

df$col <- paste0("rec", ave(df$id, df$id, FUN = seq_along))

方案3:data.table实现

适合处理十万行以上的大数据集,运行效率更高:

library(data.table)
# 转换为data.table格式
setDT(df)
# 按id分组生成新的col列
df[, col := paste0("rec", seq_len(.N)), by = id]

运行以上任意一种方案后,输出结果与给出的预期示例完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 20:39:00