如何使用dplyr联接2个表并保留RHS表中的所有列?

时间:2019-03-28 18:50:38

标签: r dplyr left-join

这里有2个数据帧:

df1 <- data.frame(ID=c(1,2,3,4))
df1
df2 <- data.frame(ID=c(1,3))
df2

我如何加入他们以获得以下输出?

#  ID.1 ID.2
#     1    1
#     2 
#     3    3
#     4 

谢谢!

2 个答案:

答案 0 :(得分:2)

一种选择是使用match

data.frame(ID.1 = df1$ID, ID.2 = df2$ID[match(df1$ID, df2$ID)])
#   ID.1 ID.2
#1    1    1
#2    2   NA
#3    3    3
#4    4   NA

答案 1 :(得分:2)

您可以在加入之前复制df2中的ID列:

library(tidyverse)

df1 <- data.frame(ID=c(1,2,3,4))
df2 <- data.frame(ID=c(1,3)) %>% 
  mutate(ID.2 = ID)

df1 %>% 
  left_join(df2, by = c("ID" = "ID"))

  ID ID.2
1  1    1
2  2   NA
3  3    3
4  4   NA