处于大数据时代,不会数据拼接就要gg了!
数据库不会老老实实的将一切都准备好等您来享用。大部分数据是零散的,甚至是乱糟糟的!因此,数据拼接是一个必备技能!
手动拼接?样本量小的时候还可以,也就眼睛受点苦。有时候,不但眼睛受了苦,数据的拼接工作也同样搞砸!
如果样本量达几千几万几亿的话,那就变得相当困难了。一旦上下行串,后果将会是毁灭性的!
小编今天就来解决这个问题!将用到{dplyr}中的拼接函数 *_join(),以及基础R的函数merge()。
速速进入操作部分~
#安装和载入
install.packages("dplyr")
library(dplyr)
创建两个数据(包含共同变量:id)用于后续数据拼接,为了让演示能简单明了,我们所创建的示范数据是极其简单的。
# 创建第一个数据
mydata_1 <- tibble(id = c(1, 2, 3),
var1 = c("A1", "B1", "C1"))
mydata_1
# 创建第二个数据
mydata_2 <- tibble(id = c(1, 2, 4),
var2 = c("A2", "B2", "C2"))
mydata_2
接下来,根据不同的拼接目的介绍四个*_join()函数和merge()的用法。
首先,介绍第一个函数inner_join(),将两个数据集根据共同变量id拼起来,代码如下:
mydata_in <- inner_join(mydata_1, mydata_2, by = "id")
mydata_in
上述代码将保留两个数据集(mydata_1和mydata_2)中id相同的行,并拼在一起。
看下图更加容易理解:
一图胜过千言万语!
此外,如果是使用merge():
mydata_in1 <- merge(mydata_1, mydata_2, by = "id")
mydata_in1
第二个函数left_join(),代码如下:
mydata_left <- left_join(mydata_1, mydata_2, by = "id")
mydata_left
left_join()顾名思义,以代码中在左边的数据(mydata_1)为准进行两个数据集的拼接,保留mydata_1中所有行,即id为1, 2, 3的样本。在mydata_2中,没有对应的id则以NA(缺失值)的形式标记。见下图:
mydata_left1 <- merge(mydata_1, mydata_2, by = "id", all.x = TRUE)
mydata_left1
第三个函数:right_join(),代码如下:
mydata_right <- right_join(mydata_1, mydata_2, by = "id")
mydata_right
使用merge()拼接数据:
mydata_right1 <-merge(mydata_1, mydata_2, by = "id", all.y = TRUE)
mydata_right1
上述代码:all.y = TRUE中y代表第二个数据集,即保留第二个数据集(mydata_2)中的全部id(1, 2, 4)。
第四个函数full_join(),代码如下:
mydata_full <- full_join(mydata_1, mydata_2, by = "id")
mydata_full
上述full_join()将保留两个数据集中所有行,即id为1, 2, 3, 4。如下图:
如果使用merge(),可以这么做:
mydata_full1 <- merge(mydata_1, mydata_2, by = "id", all = TRUE)
mydata_full1
上述代码:all = TRUE,即拼接两个数据集时要保留它们的全部行,即id为1, 2, 3, 4。
示意图加上表格,一整个清晰明了!
公众号的线上课程
1. 《R语言和统计新手课程》
2. 《回归:从入门到进阶》
【通过公众号菜单栏--线上课程--新手课程/回归课程】
统计咨询
公众号核心成员的成果发表