r - 合并两个 data.frames 并替换

标签 r join merge dataframe data.table

我有两个数据集。第一个较小,但数据更精确。 我需要加入他们,但是: 1. 如果我在 Data1 中有一些数据 - 我只使用这些数据。 2. 如果我在 Data1 中没有数据,但它们在 Data2 中 - 我仅使用 Data2 中的数据。

Data1 <- data.frame(
    X = c(1,4,7,10,13,16),
    Y = c("a", "b", "c", "d", "e", "f")
)

Data2 <- data.frame(
    X = c(1:10),
    Y = c("a", "b", "c", "d", "e", "f", "g", "h", "i", "j")
)

所以我的 data.frame 应该是这样的:

DataJoin <- data.frame(
    X = c(1,4,7,10,13,16,7,8,9,10),
    Y = c("a", "b", "c", "d", "e", "f", "g", "h", "i", "j")
)

我怎样才能做到这一点? 我尝试过以某种方式选择合并表单基础包和 data.table 包,但我无法按照我的意愿实现它。

最佳答案

无需加入。您可以将问题重新表述为“将在 Data2 中找到但在 Data1 中未找到的数据添加到 Data1”。所以简单地做:

id <- Data2$Y %in% Data1$Y
DataJoin <- rbind(Data1,Data2[!id,])

给予:

> DataJoin
    X Y
1   1 a
2   4 b
3   7 c
4  10 d
5  13 e
6  16 f
7   7 g
8   8 h
9   9 i
10 10 j

关于r - 合并两个 data.frames 并替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20661325/

相关文章:

r - 匹配多个字符串并加入

MySQL 数组字段上的内连接

git - 在这些场景下使用 git cherry-pick 是否合适?

svn - 与 Subclipse 合并时出现树冲突

r - 寻找变量的最大值

r - 在 ggplot2 中手动为 x 和 y Axis 添加中断

r - 将时间序列拆分为另一个不规则时间序列

python - 使用 union 比加入 apache spark 更有效,还是没关系?

asp.net-mvc - 使用 MSBuild 枚举文件夹

从字符串的一部分中删除多余的分隔符