我有2个数据框,每个框都有不同的列数。在这两个数据帧之间某些列是公用的。如何仅将两个数据帧的公共列绑定到新数据帧?

我尝试使用library(plyr);rbind.fill(A,B),但是它在不匹配的列中设置了NA值,这对我没有帮助。

非常感谢
欧共体

最佳答案

使用intersect检索公共列。

dfr1 <- data.frame(x = 1:5, y = runif(5), z = rnorm(5))
dfr2 <- data.frame(w = letter[1:5], x = 6:10, y = runif(5))
common_cols <- intersect(colnames(dfr1), colnames(dfr2))
rbind(
  subset(dfr1, select = common_cols),
  subset(dfr2, select = common_cols)
)


正如评论中指出的那样,您可以将最后一行替换为

rbind(
  dfr1[, common_cols],
  dfr2[, common_cols]
)


以获得较小的性能和打字改进。

rbind(
  dfr1[common_cols],
  dfr2[common_cols]
)


也可以,但是我认为还不太清楚。

09-18 19:36