R语言按两列匹配将另一数据框对应值填入目标数据框
方法1:纯base R用match()实现(无依赖,代码极简)
直接将两个匹配键(姓名+年份)拼接为单一字符串作为匹配依据,一行代码完成赋值:
df1$status <- df2$status[match(paste(df1$names, df1$year), paste(df2$names, df2$year))]
运行后输出df1即可得到你需要的结果。
方法2:用dplyr包的left_join()实现(可读性更高,适合多匹配键场景)
如果日常已经在使用tidyverse生态,这种方法逻辑更清晰,不容易出现匹配错误:
library(dplyr) df1 <- left_join(df1[,c("names", "year")], df2, by = c("names", "year"))
两种方法运行后得到的df1都和你给出的预期输出完全一致。
内容的提问来源于stack exchange,提问作者user13822027
相关产品推荐
相关产品推荐

