R Studio:使用left_join时重复ID

时间:2017-01-17 05:26:52

标签: r left-join primary-key rstudio reshape2

我目前正在尝试使用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>

这给我带来了两个问题:

  1. ID 2和3的'重复'条目

  2. 删除ID 9和10,在DF1或DF2中没有匹配

  3. 重新。问题1,我意识到R在做left_join时正在创建所有可能的数据组合。

    这使我怀疑我需要使用重塑或强制转换,以便在加入它们之前从DF2和DF3中删除这些重复的ID。具体来说,V3(讨厌的附加费)。但是,我对R来说相当新,而且我对如何编码这个

    感到有些不知所措

    如果有人有任何建议,我将非常感激

0 个答案:

没有答案