首页 > 解决方案 > 如何垂直组合两个数据框,但只保留匹配的列?

问题描述

我希望垂直组合两个只有一些常见列的数据框。但是,我想删除两个数据框中不可用的任何列。当我使用 bind_rows() 时,它会保留所有列并用 NA 填充不匹配的行。而且我不能使用 rbind() 因为这需要相同的列。

这里有什么好的解决方案?

标签: rrbinddata-wrangling

解决方案


您可以与列名称相交并仅选择这些名称:

df1 <- tibble(a = runif(100), b = runif(100), c = runif(100))
df2 <- tibble(a = runif(100), d = runif(100))

commcols <- intersect(names(df1), names(df2))
newdf <- bind_rows(
    select(df1, all_of(commcols)),
    select(df2, all_of(commcols))
)

推荐阅读