合并两个表并将组合从第一个乘以第二个
Combine two tables and multiply combinations from first into second
我想根据第二个 table 的匹配条件合并两个 table。但是,对于不匹配的字段,我想从第一个 table.
复制记录
我正在使用 dplyr 并尝试过 full_join
但这只是结合了两个 table 并且不会复制不匹配的行。
Table 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
Table 2
K6 SL EY Val.2
Aero Asia Asia 15
Aero Asia US 20
Table 3 即 Table 1 和 Table 2 的组合(来自 table 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
K6
、SL
、EY
组合Aero
、Asia
、US
中的table2 但是不在 table 1 中,因此我想复制 table 1 中的值,但将 EY
设置为 US
要为 table 1 中不存在的 EY
值复制 table,我建议仅在列 [=13= 上加入 table 2 ] 和 SL
,不在列 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
的所有行,将 Val.1
设置为 0。
table_3 <- table_3 %>%
mutate(Val.1 = ifelse(EY.x==EY.y, Val.1, 0)) %>%
select(-EY.y, EY=EY.x)
K6 SL EY Val.2 K7 Val.1
1 Aero Asia Asia 15 Gen 1
2 Aero Asia Asia 15 Arp 2
3 Aero Asia Asia 15 Pro 8
4 Aero Asia Asia 15 Lgt 6
5 Aero Asia US 20 Gen 0
6 Aero Asia US 20 Arp 0
7 Aero Asia US 20 Pro 0
8 Aero Asia US 20 Lgt 0
我想根据第二个 table 的匹配条件合并两个 table。但是,对于不匹配的字段,我想从第一个 table.
复制记录我正在使用 dplyr 并尝试过 full_join
但这只是结合了两个 table 并且不会复制不匹配的行。
Table 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
Table 2
K6 SL EY Val.2
Aero Asia Asia 15
Aero Asia US 20
Table 3 即 Table 1 和 Table 2 的组合(来自 table 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
K6
、SL
、EY
组合Aero
、Asia
、US
中的table2 但是不在 table 1 中,因此我想复制 table 1 中的值,但将 EY
设置为 US
要为 table 1 中不存在的 EY
值复制 table,我建议仅在列 [=13= 上加入 table 2 ] 和 SL
,不在列 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
的所有行,将 Val.1
设置为 0。
table_3 <- table_3 %>%
mutate(Val.1 = ifelse(EY.x==EY.y, Val.1, 0)) %>%
select(-EY.y, EY=EY.x)
K6 SL EY Val.2 K7 Val.1
1 Aero Asia Asia 15 Gen 1
2 Aero Asia Asia 15 Arp 2
3 Aero Asia Asia 15 Pro 8
4 Aero Asia Asia 15 Lgt 6
5 Aero Asia US 20 Gen 0
6 Aero Asia US 20 Arp 0
7 Aero Asia US 20 Pro 0
8 Aero Asia US 20 Lgt 0