gpt4 book ai didi

r - left_join 两个数据帧并覆盖

转载 作者:行者123 更新时间:2023-12-04 12:05:53 24 4
gpt4 key购买 nike

我想合并两个数据框,其中 df2覆盖 NA 的任何值或出现在 df1 . Merge data frames and overwrite values提供 data.table选项,但我想知道是否有办法用 dplyr 做到这一点.我已经尝试了所有 _join选项,但似乎没有这样做。有没有办法用 dplyr 做到这一点? ?

下面是一个例子:

df1 <- data.frame(y = c("A", "B", "C", "D"), x1 = c(1,2,NA, 4)) 
df2 <- data.frame(y = c("A", "B", "C"), x1 = c(5, 6, 7))

期望的输出:
  y x1
1 A 5
2 B 6
3 C 7
4 D 4

最佳答案

我想你想要的是保持 df2 的值并且只添加 df1 中的那些不存在于 df2这是什么anti_join做:

“anti_join 返回 x 中没有匹配值的所有行,只保留 x 中的列。”

我的解决方案:

df3 <- anti_join(df1, df2, by = "y") %>% bind_rows(df2)

Warning messages:
1: In anti_join_impl(x, y, by$x, by$y) :
joining factors with different levels, coercing to character vector
2: In rbind_all(x, .id) : Unequal factor levels: coercing to character

> df3
Source: local data frame [4 x 2]

y x1
(chr) (dbl)
1 D 4
2 A 5
3 B 6
4 C 7

这一行给出了所需的输出(以不同的顺序)但是,你应该注意警告信息,在处理你的数据集时一定要阅读 y作为字符变量。

关于r - left_join 两个数据帧并覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35637135/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com