当前位置:首页
> .html
导读:分享一个dplyr处理数据的动态版案例,希望这样能更加直观的解释这些函数的意义,喜欢的小伙伴可以关注我的公众号R语言数据分析指南,持续分享更多优质资源。后台回复dplyr获取文中所...
分享一个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()

突变联接
内部联接
inner_join函数合并两个数据集的变量,但仅保留具有共同ID的行

左连接
与inner_join函数的区别在于,left_join保留了Y与左数据表匹配的行

左联接(y中的额外行)
如果有多个x和y之间的匹配,返回所有组合

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

right-join.gif
完全联接
full_join函数保留两个输入数据集的所有行,并在其中一个数据帧中缺少ID时插入NA

full-join.gif
过滤联接
半连接
semi_join函数仅保留两个数据集共有的行,而仅保留左侧数据集的列

semi-join.gif
反联接
anti_join函数仅保留右侧数据中不存在的行,并且仅保留左侧数据中的列

anti-join.gif
Union
全部独特的行,对重复行去重

union.gif
全部的行,保持重复

union-all.gif
intersect
仅保留唯一行

intersect.gif
Set Difference

setdiff.gif

setdiff-rev.gif
宽表转长表

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

tidyr-spread-gather.gif
发表评论: