【发布时间】:2019-11-04 15:10:42
【问题描述】:
我有两个大型数据框。它们的一个最小的、可重现的示例如下所示:
A <- data.frame(A=c("a","b","c","d"), B=c(1,2,3,4), C=c(1,2,NA,NA), D=c(1,2,3,4))
A
A B C D
1 a 1 1 1
2 b 2 2 2
3 c 3 NA 3
4 d 4 NA 4
B <- data.frame(A=c("c","d"), B=c(3,4), C=c(3,4))
B
A B C
1 c 3 3
2 d 4 4
对于 A 中具有 NA 的每一行,我在 B 中都有一个对应的行,用于替换缺失值。我想将两个数据框 A 和 B 合并到一个“通用”数据框 AB 中,将数据框 A 列 C 中的 NA 替换为数据框 B 列 C 中的相应值。结果应如下所示:
AB <- data.frame(A=c("a","b","c","d"), B=c(1,2,3,4), C=c(1,2,3,4), D=c(1,2,3,4))
AB
A B C D
1 a 1 1 1
2 b 2 2 2
3 c 3 3 3
4 d 4 4 4
我得到解决方案的“最接近”(也不是那么接近)是使用以下代码:
AB <- merge(A,B, all.x = TRUE)
AB
A B C D
1 a 1 1 1
2 b 2 2 2
3 c 3 NA 3
4 d 4 NA 4
显然,它只使用了 A 中的变量。我已经咨询了以下问题:
- How to join (merge) data frames (inner, outer, left, right)
- Merging data frames with different number of rows and different columns
请考虑实际数据帧要大得多。如果您需要任何进一步的信息,请告诉我。提前致谢!
【问题讨论】:
-
C 是唯一需要替换的列,还是需要扩展到更多列组合?
-
感谢您的提问。 C 是唯一需要替换的列。