【发布时间】:2019-10-19 05:25:23
【问题描述】:
我有大量数据框要合并。每个都有数百列。我想在执行此操作之前识别所有不匹配的列名。到目前为止,我可以生成一个不匹配列表,但格式很糟糕,我不太清楚如何判断它们来自哪个数据框。
#create data
df1 <- data.frame("col1" = 3:4, "Age" = c(22,16), "Name" = c("James","Jim"))
df2 <- data.frame("col1" = 3:4, "Age" = c(18,19), "Name" = c("Mike","Mia"))
df3 <- data.frame("mismatch_col_name_1" = 1:2, "Age" = c(21,15), "name" = c("John","Dora"))
df4 <- data.frame("mismatch_col_name_2" = 1:2, "Age" = c(21,15), "Name" = c("John","Dora"))
files <- list(df1, df2, df3, df4)
# find mismatched column names
mismatches <- NULL
for (i in 1:(length(files) - 1)) {
mismatches <- c(mismatches, setdiff(colnames(files[[i]]), colnames(files[[i+1]])))
}
mismatches <- c(mismatches, setdiff(colnames(files[[length(files)]]), colnames(files[[1]])))
print(mismatches)
[1] "col1" "Name" "mismatch_col_name_1" "name"
[5] "mismatch_col_name_2"
所需的输出类似于:
“df3”“mismatch_col_name_1”“名称”
“df4”“mismatch_col_name_2”“名称”
甚至是 df 名称和列号。对任何解决方案或更好的方法感兴趣。
【问题讨论】:
-
我们能否确信列的位置在所有文件中始终保持一致? (例如,任何看起来像 name 的东西总是第三列??)你知道至少一个文件的所有正确的列名应该是什么吗? (即在本例中,我们事先知道 col1、Age 和 Name)
-
我认为这里的关键问题是@Jas 提出的最后一个问题,即您是否有所需/正确列名的主列表,或者您是否想寻找差异,句号?
标签: r merging-data