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

R语言中如何为数据框重复人名添加序号后缀实现唯一标识

R语言重复人名添加序号后缀解决方案

报错原因

make.unique函数要求输入参数为字符向量,你直接传入了整个数据框,因此触发类型错误。此外原生make.unique默认仅从第二个重复项开始加_1后缀,不符合你要求的第一个重复项就加_1的规则,可通过以下方案实现需求:

实现代码

方案1:基础R实现(无需加载额外包)

Data_I_Have <- data.frame(
  "Person" = c("John", "John", "John", "Peter", "Peter", "Peter", "Tim", "Kevin", "Adam", "Adam", "Xavier"),
  "Number_of_Kids" = c("4", "1", "1", "5", "2", "3", "7", "0", "3", "3", "5")
)

Data_I_Have$Person <- ave(Data_I_Have$Person, Data_I_Have$Person, FUN = function(x) {
  n <- length(x)
  if (n == 1) return(x)
  paste0(x, "_", seq_along(x))
})

方案2:dplyr实现(代码更简洁易读)

library(dplyr)

Data_I_Have <- data.frame(
  "Person" = c("John", "John", "John", "Peter", "Peter", "Peter", "Tim", "Kevin", "Adam", "Adam", "Xavier"),
  "Number_of_Kids" = c("4", "1", "1", "5", "2", "3", "7", "0", "3", "3", "5")
)

Data_I_Want <- Data_I_Have %>%
  group_by(Person) %>%
  mutate(Person = if_else(n() > 1, paste0(Person, "_", row_number()), Person)) %>%
  ungroup()

运行以上任意一种方案后,得到的结果即为你需要的目标数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:09:03