1

我有 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 个数据集。

谢谢

4

3 回答 3

2

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

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]]))
}
于 2018-07-11T14:48:25.757 回答
2

除了 Wimpel 的答案,您还可以通过 names() 进行搜索

intersect(names(dataframe1), names(dataframe2))
于 2020-04-07T09:16:47.010 回答
1

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

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

intersect(v1, v2)

#[1] "test"  "test2"
于 2018-07-11T14:42:29.240 回答