R语言:满足文本匹配条件时合并两个行数不同的数据框
R数据框按id匹配合并实现方案
核心逻辑是基于df1做左连接,保留df1所有行,按id字段匹配df2的对应值,未匹配行自动填充NA。
注意:你给出的
df2代码定义和打印输出不一致,以下实现基于你的预期输出逻辑,即df2中不存在id2 = 1text的行。
方法1:基础R实现
# 左连接两个数据框 df_merged <- merge(x = df1, y = df2, by.x = "id1", by.y = "id2", all.x = TRUE) # 重命名列名得到最终df1 df1 <- setNames(df_merged, c("id1", "area1"))
方法2:dplyr包实现(更简洁)
library(dplyr) df1 <- df1 %>% # 按指定字段左连接df2 left_join(df2, by = c("id1" = "id2")) %>% # 重命名area2为area1 rename(area1 = area2)
运行上述任意一种方法后,得到的df1即为你需要的结果:
id1 area1 1 1text NA 2 2text 11 3 3text 22
内容的提问来源于stack exchange,提问作者Maike
相关产品推荐
相关产品推荐

