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

在R中如何删除df1里存在于df2中的重复行

R语言删除df1中与df2完全一致行的实现方案

最优方案:使用dplyr的anti_join()(最优雅简洁)

anti_join是dplyr包中专门用于取两个数据集行差集的函数,默认按照两个数据框的所有共同列进行匹配,返回仅在第一个数据框中存在的行,完全贴合需求:

# 加载dplyr包,未安装可先运行 install.packages("dplyr")
library(dplyr)

# 直接取df1和df2的行差集
df1_clean <- anti_join(df1, df2)

运行后得到的df1_clean就已经删除了同时存在于df2中的完全重复行,你的示例运行后会保留3行:Mike(20)、Paul(21)、Henry(23)。

无依赖方案:Base R原生实现

如果不想安装第三方包,可以用原生函数实现,核心逻辑是将每行的所有列值组合为唯一标识,再筛选不在df2标识集合中的行:

# 按所有列组合匹配,筛选df1中不存在于df2的行
df1_clean <- df1[!interaction(df1) %in% interaction(df2), ]

如果两个数据框的列顺序不一致,可手动指定匹配列保证准确性:

match_cols <- c("name", "age")
df1_clean <- df1[!interaction(df1[match_cols]) %in% interaction(df2[match_cols]), ]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:36:04