关系连接函数merge
上一次写过关于内连接、左连接、右连接、全连接的文章,用的是inner_join()、left_join、right_join()、full_join(),详细介绍可以看一下原来的那篇文章,链接:https://blog.youkuaiyun.com/weixin_42437924/article/details/108701670
这次用merge函数来实现:
先生成两个数据框df1,df2
> df1 <- data.frame(Id=c(1:8),sport=c(rep('basketball',4),rep("soccer",4)))
> df2 <- data.frame(Id=c(2,4,6,10),sex=c(rep('male',3),'female'))
> df1
Id sport
1 1 basketball
2 2 basketball
3 3 basketball
4 4 basketball
5 5 soccer
6 6 soccer
7 7 soccer
8 8 soccer
> df2
Id sex
1 2 male
2 4 male
3 6 male
4 10 female
内连接:
> df3 <- merge(x=df1,y=df2,by='Id')
> df3
Id sport sex
1 2 basketball male
2 4 basketball male
3 6 soccer male
左连接:
> df4 <- merge(x=df1,y=df2,by='Id',all.x = TRUE)
> df4
Id sport sex
1 1 basketball <NA>
2 2 basketball male
3 3 basketball <NA>
4 4 basketball male
5 5 soccer <NA>
6 6 soccer male
7 7 soccer <NA>
8 8 soccer <NA>
右连接:
> df5 <- merge(x=df1,y=df2,by='Id',all.y = TRUE)
> df5
Id sport sex
1 2 basketball male
2 4 basketball male
3 6 soccer male
4 10 <NA> female
全连接:
> df6 <- merge(x=df1,y=df2,by='Id',all = TRUE)
> df6
Id sport sex
1 1 basketball <NA>
2 2 basketball male
3 3 basketball <NA>
4 4 basketball male
5 5 soccer <NA>
6 6 soccer male
7 7 soccer <NA>
8 8 soccer <NA>
9 10 <NA> female