Use rows_update()
library(dplyr)
df1 <- data.frame(
ID = c("1", "2", "3", "4"),
value = c("A", "B", NA, NA)
)
df2 <- data.frame(
ID = c("3", "4"),
value = c("C", "D")
)
df1 %>%
rows_update(df2, by = "ID")
#> ID value
#> 1 1 A
#> 2 2 B
#> 3 3 C
#> 4 4 D
Created on 2020-10-13 by the reprex package (v0.3.0)