加入数据框并用另一列替换一列

tnt*_*tnt 4 r dplyr

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

当我尝试使用左联接、内联接或完全联接来联接这些值时,我最终得到两个 ID 列(ID.x 和 ID.y)。无论如何要这样做,以便我更正的数据集中的 ID 简单地替换完整数据集中的 ID?

例如,

df.full <- left_join(df.full, correctID, 
                     by = c("value"))
Run Code Online (Sandbox Code Playgroud)

我已经尝试了 copy = TRUE 和 FALSE,但这似乎没有帮助。

Gre*_*gor 8

有几种情况:

如果您总是想要值 from correctID,只需IDdf.full第一个删除列:

df.full %>%
  select(-ID) %>%
  left_join(correctID, by = "value")
Run Code Online (Sandbox Code Playgroud)

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

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

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