分享一个dplyr处理数据的动态版案例,希望这样能更加直观的解释这些函数的意义,喜欢的小伙伴可以关注我的公众号R语言数据分析指南,持续分享更多优质资源。后台回复dplyr获取文中所有动态图
原文代码:https://mp.weixin.qq.com/s/elSBJJUAhf1DNKPPKkSbSg
library(tidyverse)
x <- dplyr::data_frame(id = 1:3,
x = paste0("x", 1:3))
y <- dplyr::data_frame(id = (1:4)[-3],
y = paste0("y", (1:4)[-3]))
> x
# A tibble: 3 x 2
id x
<int> <chr>
1 1 x1
2 2 x2
3 3 x3
> y
# A tibble: 3 x 2
id y
<int> <chr>
1 1 y1
2 2 y2
3 4 y4
-
Mutating Joins: inner_join(), left_join(), right_join(), full_join()
-
Filtering Joins: semi_join(), anti_join()
-
Set Operations: union(), union_all(), intersect(), setdiff()
![](https://img.haomeiwen.com/i16360488/6f617b1b7d4f9540.png)
突变联接
内部联接
inner_join函数合并两个数据集的变量,但仅保留具有共同ID的行
![](https://img.haomeiwen.com/i16360488/3fd1077431eaebd8.gif)
左连接
与inner_join函数的区别在于,left_join保留了Y与左数据表匹配的行
![](https://img.haomeiwen.com/i16360488/7829b77bc697d813.gif)
左联接(y中的额外行)
如果有多个x和y之间的匹配,返回所有组合
![](https://img.haomeiwen.com/i16360488/ecba0460e4f839d8.gif)
右联接
right_join函数保留右侧的所有数据行,如果比较左连接与右连接,则可以看到两个函数都保留相反数据的行
![](https://img.haomeiwen.com/i16360488/44cc5c7fa7d6b63d.gif)
完全联接
full_join函数保留两个输入数据集的所有行,并在其中一个数据帧中缺少ID时插入NA
![](https://img.haomeiwen.com/i16360488/b16943ccc4737466.gif)
过滤联接
半连接
semi_join函数仅保留两个数据集共有的行,而仅保留左侧数据集的列
![](https://img.haomeiwen.com/i16360488/9e560a80c1535d76.gif)
反联接
anti_join函数仅保留右侧数据中不存在的行,并且仅保留左侧数据中的列
![](https://img.haomeiwen.com/i16360488/106d89bd42d2af8f.gif)
Union
全部独特的行,对重复行去重
![](https://img.haomeiwen.com/i16360488/e79d20075b33e7f9.gif)
全部的行,保持重复
![](https://img.haomeiwen.com/i16360488/1c30f5fed74ac027.gif)
intersect
仅保留唯一行
![](https://img.haomeiwen.com/i16360488/80e74a9a5db5adca.gif)
Set Difference
![](https://img.haomeiwen.com/i16360488/14bbbc2e3d3bd7f9.gif)
![](https://img.haomeiwen.com/i16360488/96ff7396d4fc2b56.gif)
宽表转长表
![](https://img.haomeiwen.com/i16360488/7654a352cbf5b914.png)
wide
#> # A tibble: 2 x 4
#> id x y z
#> <int> <chr> <chr> <chr>
#> 1 1 a c e
#> 2 2 b d f
long
#> # A tibble: 6 x 3
#> id key val
#> <int> <chr> <chr>
#> 1 1 x a
#> 2 2 x b
#> 3 1 y c
#> 4 2 y d
#> 5 1 z e
#> 6 2 z f
![](https://img.haomeiwen.com/i16360488/8b8d47511c86aa78.gif)
网友评论