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
I noticed that rows_update does not work with duplicate values:
df1 <- data.frame(
ID = c("1", "2", "2", "3", "4"),
value = c("A", "B", "B", NA, NA)
)
df2 <- data.frame(
ID = c("3", "4"),
value = c("C", "D")
)
df1 %>%
rows_update(df2, by = "ID")
Fehler: `x` key values are not unique.
I now use a left_join and collapse both columns:
df1 %>%
left_join(df2, by="ID") %>%
mutate(
value=if_else(is.na(value.x), value.y, value.x)
) %>%
select(ID, value)
ID value
1 1 A
2 2 B
3 2 B
4 3 C
5 4 D