首页 > 解决方案 > 仅使用 R 中表 A 中的列合并表 A 和 B

问题描述

我有 2 个数据框 A 和 B,其中 A 中的列是 B 中的列的子集,如下所示

表 A:

[A] [B] [C]
 1   2   3
 4   5   6

表 B:

[A] [B] [C] [D]
 7   8   9  10
11  12  13  14

我希望得到这样的输出:

[A] [B] [C]
 1   2   3
 4   5   6
 7   8   9
11  12  13

我应该使用什么样的代码/函数来直接获得这样的结果?

我试过rbind.fill了,但我从 A 和 B 中得到了所有不同的列,以后我可以删除其中的一些。但是,我的实际数据包含如此多的列,因此简单地键入所有不需要的列并不是最佳选择。

如果尝试一次性获得我想要的结果真的很不明智,那么欢迎使用其他快速解决方法=D。谢谢你。

标签: rdplyr

解决方案


我们可以找到B其中存在的列A,然后rbind是那些列。

cols <- names(B)[names(B) %in% names(A)] 
rbind(A, B[cols])

#   A  B  C
#1  1  2  3
#2  4  5  6
#3  7  8  9
#4 11 12 13

如果两者AB可以有不同的列,我们可以使用intersect来查找公共列

cols <- intersect(names(B), names(A))
rbind(A[cols], B[cols])

数据

A <- structure(list(A = c(1L, 4L), B = c(2L, 5L), C = c(3L, 6L)), class 
= "data.frame", row.names = c(NA, 
-2L))
B <- structure(list(A = c(7L, 11L), B = c(8L, 12L), C = c(9L, 13L), 
D = c(10L, 14L)), class = "data.frame", row.names = c(NA, 
-2L))

推荐阅读