我有一个包含数百个.csv文件的文件夹,我想将它们合并到一个数据框中。
我一直在使用这个代码,它的效果相对较好,但只适用于带有匹配标题的文件。
df <- do.call(rbind, lapply(filenames , read.csv))
两部分问题。
1。)我想附加这个do.call代码,以包含一个包含每行数据的.csv文件名的附加列
2。)我还希望能够将.csv文件与不匹配的标头合并。每个文件有四列(名称不同)但数据类型匹配。所以我想强制文件绑定在一起而不管列标题。
这篇文章很有帮助,但不能将文件与非数学标题合并:
Merge multiple CSV files and remove duplicates in R
我也用过这段代码;仅适用于具有匹配标题的文件:
for (file in filenames){
# if the merged dataset doesn't exist, create it
if (!exists("dataset")){
dataset <- read.csv(file, header=TRUE, sep="\t")
}
# if the merged dataset does exist, append to it
if (exists("dataset")){
temp_dataset <-read.csv(file, header=TRUE, sep="\t")
dataset<-rbind(dataset, temp_dataset)
rm(temp_dataset)
}
}
答案 0 :(得分:0)
怎么样:
df <- do.call(rbind, lapply(filenames ,
function(x) data.frame(filname = x, read.csv(x)))