连接数据框并用另一列替换

时间:2019-02-05 15:34:52

标签: r dplyr

我有两个数据框,一个包含我的所有数据,另一个包含一些数据的正确ID号。

当我尝试通过左,内部或完全联接来联接这些值时,最终会出现两个ID列(ID.x和ID.y)。无论如何,这样做是为了使我校正后的数据集中的ID替换掉整个数据集中的ID?

例如,

df.full <- left_join(df.full, correctID, 
                     by = c("value"))

我尝试了copy = TRUE和FALSE,但这似乎无济于事。

1 个答案:

答案 0 :(得分:2)

有几种情况:

如果您总是要从correctID中获取值,只需先从ID中删除df.full列即可:

df.full %>%
  select(-ID) %>%
  left_join(correctID, by = "value")

如果correctID不完整,并且您只想在出现时使用它:

df.full %>%
  left_join(correctID, by = "value") %>%
  mutate(ID = coalesce(ID.y, ID.x)) %>%
  select(-ID.y, -ID.x)

您当然可以在相反的情况下将其反转(仅当缺少correctID时才想使用df.full$ID)。