R学习往期回顾:
R学习 流程控制 if,else,ifelse
R学习 从Tidyverse学起,入门R语言(tidyr和stringr)
R学习 从Tidyverse学起,入门R语言(tibble,readr和dplyr)
R学习:字符串
R学习:环境和函数
R学习:数据框的基本操作
R学习:R for Data Science(五)
R学习:R for Data Science(四)
R学习:R for Data Science(三)
R学习:R for Data Science(二)
R学习:R for Data Science(一)
今天我们补充一下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 ~key, ~val_x, 1, "x1", 2, "x2", 3, "x3")y ~key, ~val_y, 1, "y1", 2, "y2", 4, "y3")
有颜色的列表示作为“键”的变量:它们用于在表间匹配行。灰色列表示“值”列,是与键对应的值。
连接是将 x 中每行连接到 y 中 0 行、一行或多行的一种方法。下图表示出了所有可能的匹配,匹配就是两行之间的交集
匹配在实际的连接操作中是用圆点表示的。圆点的数量 = 匹配的数量 = 结果中行的数量
内连接
内连接是最简单的一种连接。只要两个观测的键是相等的,内连接就可以匹配它们
内连接的结果是一个新数据框,其中包含键、 x 值和 y 值。我们使用 by 参数告诉 dplyr 哪个变量是键:
x %>% inner_join(y, by = "key")#> # A tibble: 2 × 3#> key val_x val_y#> #> 1 1 x1 y1#> 2 2 x2 y2
外连接 内连接保留同时存在于两个表中的观测, 外连接则保留至少存在于一个表中的观测。外连接有 3 种类型
• 左连接:保留 x 中的所有观测。
• 右连接:保留 y 中的所有观测
• 全连接:保留 x 和 y 中的所有观测。
这些连接会向每个表中添加额外的“虚拟”观测,这个观测拥有总是匹配的键(如果没有其他键可匹配的话),其值则用 NA 来填充。
最常用的连接是左连接:只要想从另一张表中添加数据,就可以使用左连接,因为它会保留原表中的所有观测,即使它没有匹配。左连接应该是你的默认选择
表示不同类型连接的另一种方式是使用维恩图
base::merge() 函数可以实现所有 4 种合并连接操作
练习一下
library(tidyverse)band_membersband_instruments
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(可复制)