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

如何在R中查找两个dataframe多列完全匹配的行?

R 中找出两个数据框完全匹配行的实现方法

现有两个测试数据框:

df1 <- data.frame (name = c("Mike", "Paul", "Paul", "Henry"),
                   age = c(20, 21, 22, 23))

df2 <- data.frame (name = c("Sam", "Paul", "Paul", "Bob"),
                   age = c(26, 30, 22, 23))

需要返回df1中所有列和df2某一行完全一致的记录,以下是两种常用的简洁方案:

方法1:dplyr 方案(最优雅易读)

使用dplyr的semi_join()函数,天然适配该需求:仅返回第一个数据框中与第二个数据框所有同名列完全匹配的行,且不会因为第二个数据框存在重复匹配行,导致结果出现重复冗余。

# 加载dplyr包,属于tidyverse生态
library(dplyr)
matched_rows <- semi_join(df1, df2)

运行后返回结果:

name age
1 Paul  22

如果仅需要匹配指定列,可添加by参数指定匹配字段,例如by = "name"代表仅按name列匹配。

方法2:base R 方案(无第三方依赖)

如果不想安装额外包,用base R语法也可以快速实现,逻辑是把每行的所有字段拼接为字符串,再判断是否存在于另一个数据框的拼接结果中:

matched_rows <- df1[do.call(paste, df1) %in% do.call(paste, df2), ]

运行结果和上述方法完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:54:03