阅读 125

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  

突变联接

内部联接

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

作者:昵称已下线

原文链接:https://www.jianshu.com/p/097c12e84629

文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐