dplyr包连接数据框

介绍如何使用dplyr软件包的join函数合并数据

  • inner_join
  • left_join
  • right_join
  • full_join
  • semi_join
  • anti_join

创建示例数据

data1 <- data.frame(ID = 1:2,X1 = c("a1", "a2"))
data2 <- data.frame(ID = 2:3, X2 = c("b1", "b2"))

图1说明了两个数据框的结构以及如何使用dplyr包的不同联接函数对其进行合并

dplyr包连接数据框_第1张图片
library(tidyverse)

inner_join(data1, data2, by = "ID")
dplyr包连接数据框_第2张图片

inner_join函数合并两个数据集的变量,但仅保留具有共同ID(即ID 2)的行

左连接

left_join(data1, data2, by = "ID")
dplyr包连接数据框_第3张图片

inner_join函数的区别在于,left_join保留了左数据表的所有行

右连接

right_join(data1, data2, by = "ID") 
dplyr包连接数据框_第4张图片

right_join函数保留右侧的所有数据行,如果比较左连接与右连接,则可以看到两个函数都保留相反数据的行

完全连接

full_join(data1, data2, by = "ID")
dplyr包连接数据框_第5张图片

full_join函数保留两个输入数据集的所有行,并在其中一个数据帧中缺少ID时插入NA

半连接

semi_join(data1, data2, by = "ID")
dplyr包连接数据框_第6张图片

semi_join函数仅保留两个数据集共有的行,而仅保留左侧数据集的列

反连接

anti_join(data1, data2, by = "ID") 
dplyr包连接数据框_第7张图片

anti_join函数仅保留右侧数据中不存在的行,并且仅保留左侧数据中的列

你可能感兴趣的:(dplyr包连接数据框)