所以我在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)
})
答案 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)
我刚刚做了一个非常类似的任务,并且还想知道是否有更快/更好的方法来使用dplyr
和bind_rows
。
此任务的代码使用ldply
中的plyr
:
library(plyr)
filenames <- list.files(path = "mypath", pattern = "*", full.names=TRUE)
import.list <- ldply(filenames, read.csv)
希望有所帮助
罗