我有两个数据集。第一个较小,但具有更精确的数据。
我需要加入他们,但是:
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/