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

谢谢

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

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

我要做的是创建一个包含所有数据帧的列表,取第一个数据帧的列名,然后在另一个数据帧上循环,只取每个数据帧公用的列

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]]))
}

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

v1 <- c("test", "test2", "test4")
v2 <- c("test", "test1", "test2")
intersect(v1, v2)
#[1] "test"  "test2"

最新更新