R for data Science(八)
2018-09-08 本文已影响10人
一路向前_莫问前程_前程似锦
join家族函数
数据分析仅涉及单个数据表很少见。通常情况下,您有许多数据表,并且您必须将它们组合起来以回答您感兴趣的问题。总而言之,多个数据表称为关系数据,关系总是定义在一对表格之间。所有其他关系都是从这个简单的想法构建而成的:三个或更多表格的关系总是每对之间关系的属性。有时候一对中的两个元素都可以是同一张表!
介绍下面join几大函数
left_join
表示从左面开始添加,
数据准备
library(tidyverse)
library(nycflights13)
flights2 <- flights %>%
select(year:day, hour, origin, dest, tailnum, carrier)
flights2
我们接着看一下airline是什么内容?
imageflights2 %>%
select(-origin, -dest) %>%
left_join(airlines, by = "carrier")###等价于left_join(flights2,airlines, by = "carrier")
直接看结果
image实际上我们可以这样理解,left_join输入两个参数,分别代表左边和右边,第一个参数默认在左边,第二个参数在右边补充。本例中代表airlines中的数据自动填充到carrier后面。
这里给大家看一下left_join(x,y)形象的图型
image image image看了这个图,其实更明白了,就是一对多的哈希呀,从一对一,到一对多的转变
inner_join函数
最简单的连接类型是inner_join。当它们的键相等时,就可以内部链接,扩大值的范围:
例如:
x <- tribble( ~key, ~val_x, 1, "x1", 2, "x2", 3, "x3")
y <- tribble( ~key, ~val_y, 1, "y1", 2, "y2", 4, "y3")
x %>%
inner_join(y, by = "key")##一定不要忘记by参数
##等价于 inner_join(x,y, by = "key")
image