如何在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
相关产品推荐
相关产品推荐

