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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 02:17:24