R数据框合并(merge)的几种方式

merge data frames (inner, outer, left, right)

数据

> df1 = data.frame(CustomerId = c(1:6), Product = c(rep("Toaster", 3), rep("Radio", 3)))  
> df1    
> CustomerId    Product
1          1    Toaster
2          2    Toaster
3          3    Toaster
4          4    Radio
5          5    Radio
6          6    Radio

> df2 = data.frame(CustomerId = c(2, 4, 6), State = c(rep("Alabama", 2), rep("Ohio", 1)))
> df      
> CustomerId   State
1          2   Alabama
2          4   Alabama
3          6   Ohio  

inner

  > merge(x = df1, y = df2, by = "CustomerId", all = TRUE)          
  > 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     Ohio

left

> merge(x = df1, y = df2, by = "CustomerId", all.x = TRUE)
> 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     Ohio

right

> merge(x = df1, y = df2, by = "CustomerId", all.y = TRUE)  
> CustomerId  Product   State
1          2  Toaster   Alabama
2          4  Radio     Alabama
3          6  Radio     Ohio

outer

> merge(x = df1, y = df2, by = NULL)
> CustomerId.x  Product CustomerId.y   State
1            1  Toaster            2   Alabama
2            2  Toaster            2   Alabama
3            3  Toaster            2   Alabama
4            4  Radio              2   Alabama
5            5  Radio              2   Alabama
6            6  Radio              2   Alabama
7            1  Toaster            4   Alabama
8            2  Toaster            4   Alabama
9            3  Toaster            4   Alabama
10           4  Radio              4   Alabama
11           5  Radio              4   Alabama
12           6  Radio              4   Alabama
13           1  Toaster            6   Ohio
14           2  Toaster            6   Ohio
15           3  Toaster            6   Ohio
16           4  Radio              6   Ohio
17           5  Radio              6   Ohio
18           6  Radio              6   Ohio
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值