R语言匹配两个数据框相同值并从另一数据框添加对应字段
R语言实现两个数据框匹配新增字段的方案
完全不需要自行编写循环,R内置及第三方包中已经有高度优化的表连接函数可以直接实现需求,以下是两种常用实现方式:
方式1:基础R(无需安装额外包)
使用基础R自带的merge()函数即可完成左匹配,保留df1的全部行,匹配到的Code对应的Code_name会自动填充:
# 执行左连接,匹配键为Code字段 result_df <- merge(df1, df2, by = "Code", all.x = TRUE) # 如果需要保持df1原来的行顺序,可以再加一行 result_df <- result_df[order(result_df$Num), ]
参数说明:
by = "Code":指定两个数据框用于匹配的共同键字段all.x = TRUE:保留左侧表df1的所有观测行,未匹配到的Code对应的Code_name会填充为NA
方式2:tidyverse生态(代码更直观易读)
如果已经安装tidyverse/dplyr包,使用left_join()函数会更简洁,默认就会保留df1的原有行顺序:
# 加载dplyr包,如果没装先运行 install.packages("dplyr") library(dplyr) result_df <- left_join(df1, df2, by = "Code")
注意事项
如果匹配结果全是NA,优先检查两个数据框的Code字段类型是否一致,比如一个是数值型、一个是字符型会导致匹配失败,可以手动统一类型:
# 统一转为字符型示例 df1$Code <- as.character(df1$Code) df2$Code <- as.character(df2$Code)
内容的提问来源于stack exchange,提问作者Roman Babeykin
相关产品推荐
相关产品推荐

