使用 dplyr 连接两个数据帧的正确方法是什么?

问题描述 投票:0回答:1

我对此有点困惑。为什么下面的代码不能按我的预期工作? 我希望“data”中的代码替换“data2”中的 NA。我做错了什么?

(我想使用 dplyr)

library(dplyr)

data <- data.frame(
  Name = c("Alice", "Bob", "Charlie", "David"),
  Code = c(1234, 5678, 9012, 3456)
)

data2 <- data.frame(
  Name = c("Alice", "Bob", "Charlie", "David", "Alice", "Bob"),
  Code = c(1234, 5678, 9012, 3456, NA, NA)
)


left_join(data2, data, join_by(Name))
r dplyr left-join
1个回答
0
投票

连接不会替换任何缺失值。但是您可以使用额外的

mutate
步骤并用
coalesce
替换
NA
来实现您想要的结果:

library(dplyr, warn=FALSE)

left_join(data2, data, join_by(Name)) |>
  mutate(
    Code = coalesce(Code.x, Code.y),
    .keep = "unused"
  )
#>      Name Code
#> 1   Alice 1234
#> 2     Bob 5678
#> 3 Charlie 9012
#> 4   David 3456
#> 5   Alice 1234
#> 6     Bob 5678
© www.soinside.com 2019 - 2024. All rights reserved.