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

理解连接

x <- tribble( ~key, ~val_x, 1, "x1", 2, "x2", 3, "x3")y <- tribble( ~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#> <dbl> <chr> <chr>#> 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)
(0)

相关推荐

  • 'namespace:dplyr'没有出口‘if_all’这个对象

    当我们安装文献计量学分析R包bibliometrix,出现如下错误: 'namespace:dplyr'没有出口'if_all'这个对象 代表我们需要加载dplyr函数对应的R包,也就是tidyver ...

  • 《R数据科学》第9章-用dplyr处理关系数据

    《R数据科学》第9章-用dplyr处理关系数据

  • R语言中连接dplyr的join系列与merge函数

    欢迎来到医科研,这里是白介素2的读书笔记,跟我一起聊临床与科研的故事, 生物医学数据挖掘,R语言,TCGA.GEO数据挖掘. 在数据分析过程中,仅仅涉及一张表格的情况是非常少见的,我们经常需要联系到其 ...

  • 组合型ggplot饼图

    ggplot饼图 我们知道ggplot对于饼图的设计不够,这可能和作者不喜欢饼图有关吧,我们通过各种辅助的工具可以对饼图进行更好的修饰. 通过geom_text_repel函数,我们逐步绘制组合型饼图 ...

  • Clumper库 | 其他数据分析

    Clumper前期文章 Clumper | dplyr式的Python数据操作包 Clumper库 | 常用的数据操作函数 Clumper库 | Groupby具体案例用法 连接语法 如果想将多个记录 ...

  • R学习 从Tidyverse学起,入门R语言(tibble,readr和dplyr)

    R学习往期回顾: R学习:字符串 R学习:环境和函数 R学习:数据框的基本操作 R学习:R for Data Science(五) R学习:R for Data Science(四) R学习:R fo ...

  • R学习 从Tidyverse学起,入门R语言(tidyr和stringr)

    tidyverse出自于R大神Hadley Wickham之手,他是Rstudio首席科学家,也是ggplot2的作者.tidyverse就是他将自己所写的包整理成了一整套数据处理的方法,包括ggpl ...

  • 跟着Nature Genetics 学画图:R语言ggplot2画箱线图(boxplot)展示D s...

    简介:R语言统计与绘图公众号目前致力于分享医学统计与R绘图知识,手把手教你使用R语言绘制基线特征表.KM生存曲线.森林图.ROC曲线等.每天一篇精彩R语言推文教程,手把手带你入门R语言绘图. 今天推文 ...

  • 【生信菜鸟经】如何系统入门R语言

    写在前面 R语言不仅在生物信息数据处理中发挥着重要作用,也是其它主流数据处理人士的首选工具.现在非常多自学生物信息学的小伙伴必须学的就是R,所以写一个R的系统性入门指导是非常有必要的.我作为老一辈的生 ...

  • 生信分析人员如何系统入门R(2019更新版)

    五年前作为一个初出茅庐的菜鸟生信工程师苦于没有专业交流社群,遂自建了生信菜鸟团QQ群和博客,一点一滴积累了数万人气,进而和若干圈内好友组建了生信技能树联盟,三年前的直播生物信息学编程活动细节还历历在目 ...

  • 自行入门R语言的故事(一波三折)

    真情实感流露最是动人! 亲爱的读者你是第几次接触生物信息学才掌握的呢? 下面是NGS交流群积极参与者受邀投稿 第一部分 入门生物信息的错误示范 第一次接触生信技能树,又欢又喜,竟然还有视频,在B站,全 ...

  • 【组队学习】【28期】R语言数据科学

    R语言数据科学 论坛版块: http://datawhale.club/c/team-learning/36-category/36 开源内容: https://github.com/datawhal ...

  • 地理五诀:学地理入门法,如何学习风水?李双林(13)

    主讲:李双林 内容简述:各位朋友大家好,我叫李双林.今天我们来学习学地理入门法,原文大家读一下就可以了,我今天讲是按照我的经验来和大家来讲.让大家知道我是怎么学的,然后大家也可这样去学,可以少走很多弯 ...

  • 还觉得学PLC难?看完这份学习指南,PLC轻松入门~

    同时小七为大家整理了一份PLC基本指令,了解和熟悉PLC常用的逻辑指令和具体应用方法十分重要,学会这些,才可以让你轻松入门学PLC!