R语言两个数据框按多列匹配替换指定列值的方法咨询
R语言双列匹配替换列值的实现方法
这里提供两种常用实现方案:
基础R实现(无需加载额外包)
# 生成两列组合的唯一匹配键,匹配after中对应行的位置 match_index <- match(paste(before$before1, before$before2), paste(after$after1, after$after2)) # 仅替换匹配成功的行的before3值,未匹配行保留原值 before$before3[!is.na(match_index)] <- after$after3[na.omit(match_index)]
dplyr包实现(逻辑更直观,可读性强)
先确保你已经安装dplyr包,运行以下代码即可:
library(dplyr) before <- before %>% # 按指定的两列关联两个数据框 left_join(after, by = c("before1" = "after1", "before2" = "after2")) %>% # 优先用after3的非空值替换before3,空值(未匹配)保留原有before3的值 mutate(before3 = coalesce(after3, before3)) %>% # 删掉关联后多余的after3列 select(-after3)
运行后得到的before数据框就是你需要的结果:
> before before1 before2 before3 1 A 1 de 2 B 2 fg 3 C 3 ef
内容的提问来源于stack exchange,提问作者marie
相关产品推荐
相关产品推荐

