我有两个数据框,其中一个包含 ID 的子集和另一个的列(但具有不同的值)。
ds1 <- data.frame(id = c(1:4),
d1 = "A",
d2 = "B",
d3 = "C")
ds2 <- data.frame(id = c(1,2),
d1 = "W",
d2 = "X")
我希望在 d1 上使用 dplyr 来查找共享列,并将它们的值替换为在 d2 中找到的值,匹配 ID。我可以像这样一次改变它们:
ds1 %>%
mutate(d1 = ifelse(id %in% ds2$id, ds2$d1[ds2$id==id],d1),
d2 = ifelse(id %in% ds2$id, ds2$d2[ds2$id==id],d2))
然而,在我的实际情况下,我需要这样做 47 次。有了 的健壮性across()
,我觉得还有更好的办法。我也对非 dplyr 解决方案持开放态度。