如何仅为DataFrame中的重复ID添加字母后缀实现唯一化?
解决DataFrame重复ID仅添加字母后缀的问题
你可以修改ave里的匿名函数,只对分组长度大于1的ID添加后缀,分组长度为1的保持原ID不变:
df$ID <- ave(df$ID, df$ID, FUN = function(i) { if (length(i) == 1) { i # 无重复的ID直接返回原值 } else { paste0(i, '.', letters[seq_along(i)]) # 重复ID按顺序加.a/.b/.c... } })
示例验证
假设你的DataFrame是这样的:
df <- data.frame(ID = c("PROJ123", "PROJ123", "PROJ456", "PROJ789", "PROJ789", "PROJ789"))
运行修改后的代码后,df$ID会变成:"PROJ123.a" "PROJ123.b" "PROJ456" "PROJ789.a" "PROJ789.b" "PROJ789.c"
这样就只有重复的ID被添加了后缀,单个出现的ID保持原样。
内容的提问来源于stack exchange,提问作者sjds
相关产品推荐
相关产品推荐

