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

在R语言中基于双条件实现DataFrame数据查找匹配

多列匹配左连接实现df2添加row3列

首先先确认原始数据定义:

df1 <- data.frame(row1 = c("A", "A", "A", "B", "B", "B", "C", "C", "C"),
                  row2 = c("aa", "bb", "cc", "aa", "bb", "cc", "aa", "bb", "cc"), 
                  row3 = c(1, 5, 7, 6, 8, 9, 3, 2, 4))

df2 <- data.frame(row1 = c("A", "A", "B", "B", "B", "C", "C"),
                  row2 = c("aa", "bb", "aa", "bb", "cc", "aa", "cc"))

你可以用以下两种常用方法实现多列匹配的左连接,给df2添加row3列:

方法一:Base R的merge函数

通过指定by参数为多列名,all.x=TRUE实现左连接(保留df2的所有行):

result_merge <- merge(df2, df1, by = c("row1", "row2"), all.x = TRUE)

运行后得到的结果完全符合你的需求:

row1 row2 row3
1    A   aa    1
2    A   bb    5
3    B   aa    6
4    B   bb    8
5    B   cc    9
6    C   aa    3
7    C   cc    4

方法二:tidyverse的dplyr包

如果习惯用tidyverse语法,使用left_join函数,同样指定连接列即可:
首先加载dplyr包:

library(dplyr)

执行左连接:

result_join <- df2 %>% 
  left_join(df1, by = c("row1", "row2"))

得到的结果与方法一完全一致。

关键注意点

  • 确保两个数据框中用于匹配的列(row1和row2)数据类型完全一致(比如都是字符型),否则可能出现匹配失败;
  • 如果df2包含其他列,这两种方法都会保留所有原有列,仅新增row3列,适配你的实际场景。

内容的提问来源于stack exchange,提问作者Céline

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 04:26:55