R中数据集之间的公共列名

时间:2018-07-11 14:36:42

标签: r

我有6个数据集。它们的名称是:e10_all,e11_all,e12_all,e13_all,e14_all和e19_all。

所有列和行的数量都不同,但是有一些常见的列。我需要将这些列的行绑定在一起。首先,我要确定所有数据集共有的列。每个数据集都有大约100列,因此,一一检查它们将非常繁琐。我尝试了几种不同的比较两个数据集的方法,但是没有运气。

我尝试过:

library(arsenal)
summary(compare(e10_all, e11_all))


library(lubridate)
setdiff(e10_all, e11_all)


c <- cbind(e10_all[, which(colnames(e10_all)%in% colnames(e11_all))],
           e11_all[, which(colnames(e11_all)%in% colnames(e10_all))])


as.data.frame(lapply(intersect(names(e10_all), names(e11_all)), 
                     function(name) e10_all[name] + e11_all[name]))

这些都不给我我想要的东西。我需要的是两个数据集之间通用的列列表。如果可能的话,我想比较所有6个数据集。

谢谢

3 个答案:

答案 0 :(得分:1)

使用列名创建向量,然后使用intersect()

v1 <- c("test", "test2", "test4")
v2 <- c("test", "test1", "test2")

intersect(v1, v2)

#[1] "test"  "test2"

答案 1 :(得分:1)

我要做的是创建一个包含所有数据框的列表,获取第一个数据框的列名,然后在另一个数据框上循环以仅获取它们各自共有的列

list_df = list(e10_all,e11_all,e12_all,e13_all,e14_all,e19_all)

col_common = colnames(list_df[[1]])
for (i in 2:length(list_df)){
  col_common = intersect(col_common, colnames(list_df[[i]]))
}

答案 2 :(得分:0)

除了Wimpel的答案,您还可以按名称搜索()

intersect(names(dataframe1), names(dataframe2))