读取并绑定多个csv文件

hel*_*n.h 5 csv data-binding merge r dataframe

我有一系列csv文件(每个anum一个),具有相同的列标题和不同的行数.最初我正在阅读它们并将它们合并;

setwd <- ("N:/Ring data by cruise/Shetland")
LengthHeight2013 <- read.csv("N:/Ring data by      cruise/Shetland/R_0113A_S2013_WD.csv",sep=",",header=TRUE)
LengthHeight2012 <- read.csv("N:/Ring data by cruise/Shetland/R_0212A_S2012_WD.csv",sep=",",header=TRUE)
LengthHeight2011 <- read.csv("N:/Ring data by cruise/Shetland/R_0211A_S2011_WOD.csv",sep=",",header=TRUE)
LengthHeight2010 <- read.csv("N:/Ring data by cruise/Shetland/R_0310A_S2010_WOD.csv",sep=",",header=TRUE)
LengthHeight2009 <- read.csv("N:/Ring data by cruise/Shetland/R_0309A_S2009_WOD.csv",sep=",",header=TRUE)

LengthHeight <- merge(LengthHeight2013,LengthHeight2012,all=TRUE)
LengthHeight <- merge(LengthHeight,LengthHeight2011,all=TRUE)
LengthHeight <- merge(LengthHeight,LengthHeight2010,all=TRUE)
LengthHeight <- merge(LengthHeight,LengthHeight2009,all=TRUE)
Run Code Online (Sandbox Code Playgroud)

我想知道是否有更短/更整洁的方法来做到这一点,同时考虑到每次运行脚本时我可能想要查看不同的年份.

我也发现Tony Cookson的这段代码看起来会像我想要的那样,但它为我生成的数据框只有正确的标题但没有数据行.

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)

mymergeddata = multmerge("C://R//mergeme")
Run Code Online (Sandbox Code Playgroud)

zx8*_*754 12

查找files(list.files)并在循环(lapply)中读取文件,然后调用(do.call)row bind(rbind)将所有文件按行放在一起.

myMergedData <- 
  do.call(rbind,
          lapply(list.files(path = "N:/Ring data by cruise"), read.csv))
Run Code Online (Sandbox Code Playgroud)


Aru*_*run 11

如果你正在寻找速度,那么试试这个:

require(data.table) ## 1.9.2 or 1.9.3
ans = rbindlist(lapply(filenames, fread))
Run Code Online (Sandbox Code Playgroud)