合并具有不同列数的数据框

时间:2019-12-03 17:16:49

标签: r dataframe join

我有这两个数据框。

DF1:

enter image description here

DF2:

enter image description here

我希望我的输出DF与DF2中的X1值一起成为DF1。也就是说,这就是我希望输出看起来像的样子:

enter image description here

我尝试使用合并和联接,但是无法获得此必需的输出。主要问题似乎是由于DF1中的ID在DF2中具有多个匹配项。我得到的结果数据帧具有所有行,有点像这样:

enter image description here

我该如何解决?

谢谢。

(对表格图片表示歉意,我无法弄清楚如何动态创建表格)

2 个答案:

答案 0 :(得分:3)

您可以使用match返回DF2中的第一个匹配项。

DF1$X1  <- DF2$X1[match(DF1$ID, DF2$ID)]

答案 1 :(得分:1)

在第二个数据帧中用ID保留唯一值,然后加入:

library(tidyverse)
DF2 <- DF2 %>% 
  distinct(ID, .keep_all = TRUE) %>% 
  select(ID, X1)

res <- DF1 %>% 
  inner_join(DF2, by = "ID")

glimpse(res)