合并两个表并将组合从第一乘以第二

时间:2019-01-12 19:46:08

标签: r join dplyr multiplying

我想根据第二个表中的匹配条件合并两个表。但是,对于不匹配的字段,我想从第一个表中复制记录。

我正在使用dplyr并尝试了full_join,但这只是合并了两个表,并且没有重复不匹配的行。

表1

K6  K7  SL  EY  Val.1
Aero    Gen Asia    Asia    1
Aero    Arp Asia    Asia    2
Aero    Pro Asia    Asia    8
Aero    Lgt Asia    Asia    6

表2

K6  SL  EY  Val.2
Aero    Asia    Asia    15
Aero    Asia    US  20

表3,即表1和表2的组合(其中表1的重复项,其中EY不匹配):

K6  K7  SL  EY  Val.1   Val.2
Aero    Gen Asia    Asia    1   15
Aero    Arp Asia    Asia    2   15
Aero    Pro Asia    Asia    8   15
Aero    Lgt Asia    Asia    6   15
Aero    Gen Asia    US  0   20
Aero    Arp Asia    US  0   20
Aero    Pro Asia    US  0   20
Aero    Lgt Asia    US  0   20

表2而非表1中的K6SLEY的{​​{1}},AeroAsia组合我想复制表1中的值,但是将US设置为EY

1 个答案:

答案 0 :(得分:1)

要复制表1中不存在的EY值的表,我建议仅在列K6SL上加入表2,而不是列{{1 }}。

EY

然后,对于table_1 <- data.frame(K6=rep("Aero",4), K7=c("Gen","Arp","Pro","Lgt"), SL=rep("Asia",4), EY=rep("Asia",4), Val.1=c(1,2,8,6), stringsAsFactors = FALSE) table_2 <- data.frame(K6=rep("Aero",2), SL=rep("Asia",2), EY=c("Asia","US"), Val.2=c(15,20), stringsAsFactors = FALSE) library(dplyr) table_3 <- left_join(table_2, table_1, by=c("K6","SL")) K6 SL EY.x Val.2 K7 EY.y Val.1 1 Aero Asia Asia 15 Gen Asia 1 2 Aero Asia Asia 15 Arp Asia 2 3 Aero Asia Asia 15 Pro Asia 8 4 Aero Asia Asia 15 Lgt Asia 6 5 Aero Asia US 20 Gen Asia 1 6 Aero Asia US 20 Arp Asia 2 7 Aero Asia US 20 Pro Asia 8 8 Aero Asia US 20 Lgt Asia 6 不匹配EY.x的所有行,将EY.y设置为0。

Val.1