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

如何在R语言中匹配数据框列值并关联对应列数据

解决方法:匹配数据框并新增列

嘿,要实现你想要的匹配和新增列需求,在R里有两种非常常用的方式,我给你一步步演示:

首先先把你给出的两个数据框定义好:

d <- data.frame(v1 = c("A","B","C","D","E","F","G","H"), 
                v2 = c(1,2,3,4,5,6,7,8), 
                v3 = c(1,2,3,4,5,6,7,8))
m <- data.frame(v4 = c("B","H","A","C","D"))

方法一:使用Base R的merge()函数

merge()是R基础包自带的合并函数,专门用来处理这种数据匹配需求,参数设置好就能直接得到结果:

# 合并两个数据框,以m的v4和d的v1为匹配键,保留m的所有行
m_result <- merge(m, d, by.x = "v4", by.y = "v1", all.x = TRUE)
# 调整列名,把原来的v2和v3改成v5和v6
colnames(m_result)[2:3] <- c("v5", "v6")
# 如果需要和示例的行顺序完全一致,加上这行
m_result <- m_result[match(m$v4, m_result$v4), ]

运行后查看结果:

> m_result
  v4 v5 v6
1  B  2  2
2  H  8  8
3  A  1  1
4  C  3  3
5  D  4  4

方法二:使用dplyr包的left_join()函数

如果你习惯用tidyverse系列的工具,dplyr的left_join()会更直观,代码可读性更强:
首先需要先加载dplyr包(没安装的话先运行install.packages("dplyr")):

library(dplyr)

m_result <- m %>%
  left_join(d, by = c("v4" = "v1")) %>%  # 以v4和v1为匹配键进行左连接
  rename(v5 = v2, v6 = v3)  # 将v2、v3重命名为v5、v6

运行后直接得到和你示例完全一致的结果:

> m_result
  v4 v5 v6
1  B  2  2
2  H  8  8
3  A  1  1
4  C  3  3
5  D  4  4

这两种方法都能完美实现你的需求,选哪种就看你平时的代码习惯啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:41:02