R语言如何为数据框重复行分组添加1:n的duplicateID序列编号
实现方案
方法1:dplyr(tidyverse生态)实现
直接按数据框所有列分组后生成组内行序号即可,代码如下:
# 加载依赖包 library(dplyr) # 生成duplicateID列 df2 <- df1 %>% group_by(across(everything())) %>% mutate(duplicateID = row_number()) %>% ungroup()
说明:如果你使用的是1.0.0版本以下的dplyr,可将group_by(across(everything()))替换为group_by_all(),运行效果完全一致。
方法2:Base R实现(无需安装额外包)
使用interaction生成全列匹配的分组标识,再用ave生成分组内序号:
df1$duplicateID <- ave( x = rep(1, nrow(df1)), GROUP = interaction(df1, drop = TRUE), FUN = seq_along )
运行以上两种方法任意一种,得到的结果都和你示例中预期的df2完全一致。
内容的提问来源于stack exchange,提问作者Ulrich Neum
相关产品推荐
相关产品推荐

