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

R语言两个DataFrame列匹配:为df2新增来自df1的映射得分列

R语言数据框匹配合并实现方案

现有数据

df2数据结构

structure(list(id = c(1, 1, 2, 2, 2, 3, 3, 3), code2 = c("24600", 
"2400", "718", "19C11", "2021", "41C200", "G8511", "2021")), class = "data.frame", row.names = c(NA, -8L))

df1数据结构

structure(list(code = c("718", "E0012", "G8511", "209BF", "466D", 
"2021"), score = c(1, 1, 3, 6, 1, 2)), class = "data.frame", row.names = c(NA, -6L))

需求

将df2的code2列与df1的code列进行匹配,匹配成功时将df1对应行的score值赋值给df2新增的score2列,无匹配的位置赋值为NA。

实现方法

方法1:基础R实现(无需加载第三方包)

直接使用match函数完成匹配赋值:

df2$score2 <- df1$score[match(df2$code2, df1$code)]

方法2:dplyr包实现

使用左连接逻辑完成合并,再重命名列即可:

library(dplyr)
df2 <- df2 %>% 
  left_join(df1, by = c("code2" = "code")) %>% 
  rename(score2 = score)

最终输出结果

处理后的df2结构如下:

structure(list(id = c(1, 1, 2, 2, 2, 3, 3, 3), code2 = c("24600", 
"2400", "718", "19C11", "2021", "41C200", "G8511", "2021"), score2 = c(NA, 
NA, 1, NA, 2, NA, 3, 2)), class = "data.frame", row.names = c(NA, -8L))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:09:00