我对此有点困惑。为什么下面的代码不能按我的预期工作? 我希望“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))
连接不会替换任何缺失值。但是您可以使用额外的
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