如何在r中加载和合并多个.csv文件?

时间:2017-05-08 22:53:39

标签: r csv merge

所以我在R上很新,现在我正在尝试加载多个.csv文件(~60左右),然后将它们合并在一起。它们都有类似的列,它们的文件命名如下:dem_file_30,dem_file_31。

我一直在尝试在线使用脚本,但一直都会遇到一些错误。我确信我可以手工完成,但那真的很乏味。

示例:

file_list <- list.files("/home/sjclark/demographics/")   
list_of_files <- lapply(file_list, read.csv)  
m1 <- merge_all(list_of_files, all=TRUE)
Error: merge_all doesn't exist

这个似乎把它们读成R,但那之后我就不怎么做了......帮忙?

setwd("/home/sjclark/demographics/")
filenames <- list.files(full.names=TRUE)  
All <- lapply(filenames,function(i){
read.csv(i, header=TRUE)
})

2 个答案:

答案 0 :(得分:5)

好像您可能正在尝试使用R-bloggers (credit to Tony Cookson)上共享的nice函数:

multMerge = function(mypath){
  filenames = list.files(path = mypath, full.names = TRUE)
  datalist = lapply(filenames, 
                    function(x){read.csv(file = x,
                                         header = TRUE,
                                         stringsAsFactors = FALSE)})
  Reduce(function(x,y) {merge(x, y, all = TRUE)}, datalist)
}

或者你可能已经从差异来源拼凑了一些东西?无论如何,merge是您缺少的重要基础R功能。 merge_all并不存在于任何包中。

由于您是R(也许是所有编程)的新手,因此值得注意的是,在使用它之前,您需要定义此功能。完成后,您可以像任何其他功能一样调用它:

my_data <- multMerge("/home/sjclark/demographics/")

答案 1 :(得分:3)

我刚刚做了一个非常类似的任务,并且还想知道是否有更快/更好的方法来使用dplyrbind_rows

此任务的代码使用ldply中的plyr

library(plyr)    
filenames <- list.files(path = "mypath", pattern = "*", full.names=TRUE)
import.list <- ldply(filenames, read.csv)

希望有所帮助