将CSV文件与R中不匹配的标头合并

时间:2013-10-03 18:44:05

标签: r csv do.call

我有一个包含数百个.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)
    }
   }

1 个答案:

答案 0 :(得分:0)

怎么样:

df <- do.call(rbind, lapply(filenames , 
                        function(x) data.frame(filname = x, read.csv(x)))