R语言依据两数据框公共列a的匹配值将frame2的e列合并到frame1
R数据框按a列匹配合并e列的实现方案
已知frame2中相同a值对应的e值完全一致,因此仅需先对frame2的a、e列去重后,再和frame1按a列关联即可,以下是两种常用实现方案:
方案1:基础R实现
使用基础R自带的merge函数完成匹配,代码如下:
# 先对frame2的a、e列去重,去除重复的a值行 frame2_unique <- unique(frame2[, c("a", "e")]) # 按a列左连接,保留frame1的所有行 result <- merge(frame1, frame2_unique, by = "a", all.x = TRUE)
方案2:dplyr包实现(更简洁)
使用dplyr的distinct去重+left_join左连接完成操作,代码如下:
# 加载dplyr包 library(dplyr) # 链式操作完成去重、匹配合并 result <- frame1 %>% left_join(distinct(frame2, a, e), by = "a")
两种方案输出的result均和预期结果完全一致。
内容的提问来源于stack exchange,提问作者sfetan
相关产品推荐
相关产品推荐

