用于合并多个csv文件的r命令

时间:2015-02-24 07:52:36

标签: r csv

友 我得到了以下代码,用于组合特定文件夹中的多个csv文件,帮助我尝试此代码的人,对他来说效果很好......但是当我使用它时,它是显示任何错误,但在输出我只得到标题而不是数据。

你能告诉我如何克服这个问题吗? 代码如下所示,

setwd("C:/Users/dsuresh/Desktop/io")

multmerge = function(mypath){
  filenames=list.files(path=mypath, full.names=TRUE)
  datalist = lapply(filenames, function(x){read.csv(file=x,header=T)})
  Reduce(function(x,y) {merge(x,y)}, datalist)
}
mydata=multmerge("C:/Users/dsuresh/Desktop/io")
View(mydata)
谢谢你的朋友们......

2 个答案:

答案 0 :(得分:1)

我认为你的文件不合适.csv(逗号分隔值文件)。尝试用read.csv替换read.table函数并检查。否则此功能没有问题。如果不起作用,请尝试使用rbind而不是merge。 merge函数匹配数据中的两列然后合并。如果您的数据没有相同的rownames或列,则无法正常工作。

答案 1 :(得分:0)

rbind在您的情况下完美无缺。

csvFile1 = "col1,col2,col3\na1,a2,a3\nb1,b2,b3"
csvFile2 = "col1,col2,col3\nc1,c2,c3\nd1,d2,d3"
csvFile3 = "col1,col2,col3\ne1,e2,e3\nf1,f2,f3"
con1 = textConnection(csvFile1)
con2 = textConnection(csvFile2)
con3 = textConnection(csvFile3)
csvList = list(con1, con2, con3)

multmerge = function(files){
  datalist = lapply(files, read.csv)
  Reduce(rbind, datalist)
}

mydata=multmerge(csvList)
View(mydata)

此外,您只能do.call(rbind, datalist)代替Reduce 而且您无需在header=T中指定read.csv - 它是默认选项。