vlambda博客
学习文章列表

R学习 从Tidyverse学起,入门R语言dplyr合并数据

R学习往期回顾:





今天我们补充一下dplyr包中的合并数据的功能

dplyr::inner_join/full_join/left_join/right_join

inner_join:只包含同时出现在x,y表中的行

left_join:包含所有x中以及y中匹配的行

right_join:包含所有y中以及x中匹配的行

full_join:包含所以x、y中的行


用法

inner_join(x, y, by = NULL, copy = FALSE, suffix = c(".x", ".y"),
...)

left_join(x, y, by = NULL, copy = FALSE, suffix = c(".x", ".y"), ...)

right_join(x, y, by = NULL, copy = FALSE, suffix = c(".x", ".y"),
...)

full_join(x, y, by = NULL, copy = FALSE, suffix = c(".x", ".y"), ...)



理解连接


x <- tribble( ~key, ~val_x, 1, "x1", 2, "x2", 3, "x3")y <- tribble( ~key, ~val_y, 1, "y1", 2, "y2", 4, "y3")

有颜色的列表示作为“键”的变量:它们用于在表间匹配行。灰色列表示“值”列,是与键对应的值。


连接是将 x 中每行连接到 y 中 0 行、一行或多行的一种方法。下图表示出了所有可能的匹配,匹配就是两行之间的交集

R学习 从Tidyverse学起,入门R语言dplyr合并数据


匹配在实际的连接操作中是用圆点表示的。圆点的数量 = 匹配的数量 = 结果中行的数量

R学习 从Tidyverse学起,入门R语言dplyr合并数据




内连接

内连接是最简单的一种连接。只要两个观测的键是相等的,内连接就可以匹配它们

R学习 从Tidyverse学起,入门R语言dplyr合并数据

内连接的结果是一个新数据框,其中包含键、 x 值和 y 值。我们使用 by 参数告诉 dplyr 哪个变量是键:

x %>% inner_join(y, by = "key")#> # A tibble: 2 × 3#> key val_x val_y#> <dbl> <chr> <chr>#> 1 1 x1 y1#> 2 2 x2 y2


外连接
内连接保留同时存在于两个表中的观测, 外连接则保留至少存在于一个表中的观测。外连接有 3 种类型

• 左连接:保留 x 中的所有观测。
• 右连接:保留 y 中的所有观测
• 全连接:保留 x 和 y 中的所有观测。


这些连接会向每个表中添加额外的“虚拟”观测,这个观测拥有总是匹配的键(如果没有其他键可匹配的话),其值则用 NA 来填充。


R学习 从Tidyverse学起,入门R语言dplyr合并数据

最常用的连接是左连接:只要想从另一张表中添加数据,就可以使用左连接,因为它会保留原表中的所有观测,即使它没有匹配。左连接应该是你的默认选择
表示不同类型连接的另一种方式是使用维恩图

R学习 从Tidyverse学起,入门R语言dplyr合并数据



base::merge() 函数可以实现所有 4 种合并连接操作

R学习 从Tidyverse学起,入门R语言dplyr合并数据


练习一下

library(tidyverse)band_membersband_instruments

R学习 从Tidyverse学起,入门R语言dplyr合并数据


band_members %>% inner_join(band_instruments)band_members %>% left_join(band_instruments)band_members %>% right_join(band_instruments)band_members %>% full_join(band_instruments)

回复 资源2 可得福利,

目前有

1. 火山图,热图示例文件及完整代码

2. R语言学习基础知识代码

3. R语言实战(中文完整版)

4. R数据科学(中文完整版)

5. ggplot2:数据分析与图形艺术

6. 30分钟学会ggplot2

7. TCGA数据整理

8. ggplot2速查表pdf(可复制)