我想根据第二个表中的匹配条件合并两个表。但是,对于不匹配的字段,我想从第一个表中复制记录。
我正在使用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中的K6
,SL
,EY
的{{1}},Aero
,Asia
组合我想复制表1中的值,但是将US
设置为EY
答案 0 :(得分:1)
要复制表1中不存在的EY
值的表,我建议仅在列K6
和SL
上加入表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