R语言如何移除指定列存在重复的全部行(dplyr场景)
移除特定列存在重复的所有观测值
要实现删除所有在指定列(示例中的V1、V2)存在重复的行(即只要某组V1+V2出现超过一次,该组所有行都移除),可以用以下两种方法:
方法1:使用dplyr分组筛选
通过group_by按指定列分组,再筛选出每组行数仅为1的记录:
library(dplyr) # 定义原始数据框 df <- data.frame(V1 = c("a","b","c","a","c","a"), V2 = c(1,2,1,2,3,1), V3 = c(1,2,3,4,5,6)) # 清洗数据:保留V1+V2唯一的组 df_cleaned <- df %>% group_by(V1, V2) %>% filter(n() == 1) %>% ungroup() # 查看结果 df_cleaned
执行后会保留V1+V2组合唯一的行(即第2、3、4、5行),所有存在重复组合的行(第1、6行)会被完全移除。
方法2:使用base R的duplicated双向判断
利用duplicated函数分别从前往后和从后往前标记重复项,取两者的并集来定位所有重复组的行,再取反保留唯一行:
# 定义原始数据框 df <- data.frame(V1 = c("a","b","c","a","c","a"), V2 = c(1,2,1,2,3,1), V3 = c(1,2,3,4,5,6)) # 清洗数据 df_cleaned <- df[!(duplicated(df[c("V1", "V2")]) | duplicated(df[c("V1", "V2")], fromLast = TRUE)), ] # 查看结果 df_cleaned
两种方法最终效果一致,都能满足“移除所有存在指定列重复的观测值”的需求。
内容的提问来源于stack exchange,提问作者Klaus Peter
相关产品推荐
相关产品推荐

