我目前正在尝试使用R studio
中的主键(即ID列)连接多个数据帧library(dplyr)
library(tidyr)
#DATAFRAME (1)
ID <- c(1, 2, 3, 4, 5, 6, 7, 8)
V1 <- c(9, 3, 6, 7, 1, 5, 8, 3)
V2 <- c(7, 5, 9, 2, NA, 3, 7, NA)
DF1 <- data.frame(ID, V1, V2)
#DATAFRAME (2)
ID <- c(1, 2, 2, 3, 3, 4, 5)
V3 <- c(1, 2, 'surcharge', 2, 'surcharge', 1, 1)
V4 <- c(400, 450, 4, 450, 4, 400, 400)
DF2 <- data.frame(ID, V3, V4)
#DATAFRAME (3)
ID <- c(1, 2, 2, 3, 3, 9, 10)
V5 <- c('credit', 'credit', 'credit', 'credit', 'credit', 'cash', 'cash')
DF3 <- data.frame(ID, V5)
当我执行DF1和DF2的简单left_join时:
JoinDF <- left_join(DF1, DF2, by = "ID")
到目前为止所有的笨蛋
ID V1 V2 V3 V4
1 1 9 7 1 400
2 2 3 5 2 450
3 2 3 5 surcharge 4
4 3 6 9 2 450
5 3 6 9 surcharge 4
6 4 7 2 1 400
7 5 1 NA 1 400
8 6 5 3 <NA> NA
9 7 8 7 <NA> NA
10 8 3 NA <NA> NA
尝试将第三个DF(DF3)加入新DF(JoinDF)时出现问题
JoinDF2 <- left_join(x = JoinDF, y = DF3, by = "ID")
ID V1 V2 V3 V4.x V4.y
1 1 9 7 1 400 credit
2 2 3 5 2 450 credit
3 2 3 5 2 450 credit
4 2 3 5 surcharge 4 credit
5 2 3 5 surcharge 4 credit
6 3 6 9 2 450 credit
7 3 6 9 2 450 credit
8 3 6 9 surcharge 4 credit
9 3 6 9 surcharge 4 credit
10 4 7 2 1 400 <NA>
11 5 1 NA 1 400 <NA>
12 6 5 3 <NA> NA <NA>
13 7 8 7 <NA> NA <NA>
14 8 3 NA <NA> NA <NA>
这给我带来了两个问题:
ID 2和3的'重复'条目
删除ID 9和10,在DF1或DF2中没有匹配
重新。问题1,我意识到R在做left_join时正在创建所有可能的数据组合。
这使我怀疑我需要使用重塑或强制转换,以便在加入它们之前从DF2和DF3中删除这些重复的ID。具体来说,V3(讨厌的附加费)。但是,我对R来说相当新,而且我对如何编码这个
感到有些不知所措如果有人有任何建议,我将非常感激