R语言-merge()的使用

df1 = data.frame(CustomerId=c(1:6),Product=c(rep("Toaster",3),rep("Radio",3)))
 df2 = data.frame(CustomerId=c(2,4,6,7),State=c(rep("Alabama",3),rep("Ohio",1)))

> df1
CustomerId Product
1 1 Toaster
2 2 Toaster
3 3 Toaster
4 4 Radio
5 5 Radio
6 6 Radio

> df2
CustomerId State
1 2 Alabama
2 4 Alabama
3 6 Alabama
4 7 Ohio

> merge(df1, df2, all=TRUE)        #取并集,重复的不加(cbind重复的显示重复)
CustomerId Product State
1 1 Toaster <NA>
2 2 Toaster Alabama
3 3 Toaster <NA>
4 4 Radio Alabama
5 5 Radio <NA>
6 6 Radio Alabama
7 7 <NA> Ohio

#full join的效果

> merge(df1,df2,all=FALSE)#取交集
  CustomerId Product   State
1          2 Toaster Alabama
2          4   Radio Alabama
3          6   Radio Alabama

> merge(df2,df1,all=FALSE)#只是列先后的区别
  CustomerId   State Product
1          2 Alabama Toaster
2          4 Alabama   Radio
3          6 Alabama   Radio


> merge(df1, df2, all.x=TRUE)#以df1所拥有的显示

CustomerId Product State
1 1 Toaster <NA>
2 2 Toaster Alabama
3 3 Toaster <NA>
4 4 Radio Alabama
5 5 Radio <NA>
6 6 Radio Alabama

#left join的效果


df1
  id heights sex
1  2      62   f
2  3      65   m
3  4      71   f
4  5      71   f
5  7      67   m
> df2
  id weights sex
1  1     147   f
2  2     113   f
3  6     168   m
4  7     135   m
5  8     142   f
6  9     159   f
7 10     160   f
> merge(df1,df2)#有两个及以上相同的列,合并则会自动选择两个均相同的,结果同merge(df1, df2, by = c("id", "sex"))
  id sex heights weights
1  2   f      62     113
2  7   m      67     135

> merge(df1,df2,by="id")#两数据框中共有的sex那一列则会以sex.x和sex.y形式输出。
  id heights sex.x weights sex.y
1  2      62     f     113     f
2  7      67     m     135     m


#纵向合并用rbind(x1,x2)


  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值