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

R语言DataFrame重复记录验证:实现Name列重复时所有对应记录均标记为重复的问题

解决DataFrame中标记所有重复记录的问题

你遇到的问题很常见——duplicated()函数默认只会标记首次出现之后的重复项,所以第一次出现的那条重复记录不会被标记,导致只有部分重复行被识别。要实现“所有重复记录都标记为重复状态”的需求,我们只需要稍作调整,同时检查当前行在之前出现过,或者在之后还会出现即可。

问题根源

你的原代码:

df <- df %>% mutate("Duplicateid" = duplicated(ID,incomparables = c("",NA)))

这里的duplicated()仅标记了ID列中后续出现的重复值,第一次出现的重复项会被判定为FALSE,这就是为什么只有一条重复记录被标记的原因。

修正方案

我们可以结合duplicated()的默认用法和fromLast=TRUE参数(从后往前检查重复),将两个结果取逻辑或(|),这样就能覆盖所有重复的行:

# 创建原始DataFrame
df <- data.frame(
  ID =c("DEV2962","KTN2252","ANA2719","ITI2624","DEV2698","HRT2921","","KTN2624","ANA2548","ITI2535","DEV2732","HRT2837","ERV2951","KTN2542","KTN2542","ITI2210"), 
  city=c("DEL","mum","DEL","MUM","DEL","del","MUM","DEL","del","MUM","mum","mum","mum","mum","DEL","DEL"), 
  Name= c("dev,akash","singh,Ajay","abbas,salman","lal,ram","singh,nkunj","garg,prabal","ali,sanu","singh,kunal","tomar,lakhan","thakur,praveen","ali,sarman","khan,zuber","singh,giriraj","sharma,lokesh","pawar,pooja","sharma,nikita")
)

# 标记所有ID重复的记录(包括首次出现的那条)
df <- df %>% 
  mutate(Duplicateid = duplicated(ID, incomparables = c("",NA)) | duplicated(ID, incomparables = c("",NA), fromLast = TRUE))

针对Name列的需求(如果你的目标是Name列而非ID)

如果你的实际需求是按Name列标记重复(而非ID列),只需要把上述代码中的ID替换为Name即可:

df <- df %>% 
  mutate(DuplicateName = duplicated(Name) | duplicated(Name, fromLast = TRUE))

效果验证

运行修正后的代码后,你会发现所有重复的行(包括第一次出现的那条)对应的Duplicateid(或DuplicateName)列都会显示为TRUE,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 19:37:31