在R中导入具有文件名的多个Excel文件
在R中导入具有文件名的多个Excel文件
我有大约一百个需要导入到R并合并的Excel文件。所有的Excel文件都有四列,每一列都需要被导入。文件的格式如下所示:
1 127 122 1 87 2 107 1 136 k 1 210
我还需要为每一行添加文件名作为第五列。所有的Excel文件都在同一个文件夹中。
到目前为止,我尝试过以下方法:
library(xlsx) setwd("c:/temp/") filenames <- list.files(pattern=".xls") do.call("rbind", lapply(filenames, function(x) read.xlsx(file=x, sheetIndex=1, colIndex=(1:4), header=FALSE, FILENAMEVAR=x)))
我得到了以下错误:Error in rbind(deparse.level, ...) : numbers of columns of arguments do not match
我已经确定问题出在第三列和第四列的空单元格上,因为如果我只限制在第一列和第二列上,这个函数就能正常工作。
问题原因:在导入多个Excel文件时,原本使用的rbind函数无法将所有文件的数据合并在一起。
解决方法:使用rbind.fill函数代替rbind函数,可以成功将多个Excel文件的数据合并在一起。
下面是使用plyr包中的rbind.fill函数来导入多个Excel文件的代码:
library(plyr) df.list <- lapply(filenames, function(x) read.xlsx(file=x, sheetIndex=1, colIndex=1:4, as.data.frame=TRUE, header=FALSE, FILENAMEVAR=x)) final.df <- rbind.fill(df.list)
感谢您在自己解决问题后分享答案,这对其他人也会有帮助。plyr是一个很棒的包,不是每个人都知道它。