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

在R语言中如何基于数据框共同值匹配添加对应id列?

为df2匹配df1对应的id值

首先定义两个数据框:

# 创建df1
df1 <- data.frame(id=1:4, x1=c(2,3,5,3), x2=c(3,2,3,2), x3=c(3,5,1,3), x4=c(4,3,2,3))
df1

输出:

id x1 x2 x3 x4
1 1 2 3 3 4
2 2 3 2 5 3
3 3 5 3 1 2
4 4 3 2 3 3

# 创建df2
df2 <- data.frame(x1=c(2,5), x2=c(3,3), x3=c(3,1))
df2

输出:

x1 x2 x3
1 2 3 3
2 5 3 1

需求:为df2添加id列,使其包含df1中x1、x2、x3字段完全匹配的行对应的id值(即1和3)。


方法1:基础R的merge()函数

利用merge()按指定列匹配,保留df2的所有行并关联对应id:

# 匹配并提取所需列
result_df <- merge(df2, df1[, c("id", "x1", "x2", "x3")], by = c("x1", "x2", "x3"))
# 调整列顺序,将id置于首位
result_df <- result_df[, c("id", "x1", "x2", "x3")]
result_df

执行后得到结果:

id x1 x2 x3
1 1 2 3 3
2 3 5 3 1

方法2:tidyverse的inner_join()(更直观)

使用dplyr包的inner_join()实现关联,操作更简洁:

# 加载dplyr包
library(dplyr)

# 匹配并调整列顺序
result_df <- df2 %>%
  inner_join(df1 %>% select(id, x1, x2, x3), by = c("x1", "x2", "x3")) %>%
  relocate(id)

result_df

执行后同样得到目标结果:

id x1 x2 x3
1 1 2 3 3
2 3 5 3 1


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 12:50:29