update 和 left join 合并_R学习 从Tidyverse学起,入门R语言dplyr合并数据

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"), ...)

理解连接

833a394fd70f1fddfa433abcb73a76ac.png

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

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

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

2ee025d70987d587237be0166be3823e.png

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

2896c5a1ce71ee2fa2bc02b654ba3f7c.png

内连接

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

2896c5a1ce71ee2fa2bc02b654ba3f7c.png

内连接的结果是一个新数据框,其中包含键、 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 来填充。

6f2925f5ceb0c5be2e04a05f2d0ce596.png

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

3985428d4af8e7a7976fc3c41e160e43.png

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

cbf21324e6e180cc9cbb001f18d132aa.png

练习一下

library(tidyverse)band_membersband_instruments

8f4b119b843c4ac8f1d9666bbcb07b6e.png

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

e15c0b18a522a17983e64457de33200f.png

欢迎关注公众号

a6f0083209547f4e7c90f7d221a977c9.png

回复 资源2 可得福利,

目前有

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

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

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

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

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

6. 30分钟学会ggplot2

7. TCGA数据整理

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值