在R中导入具有文件名的多个Excel文件

14 浏览
0 Comments

在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

我已经确定问题出在第三列和第四列的空单元格上,因为如果我只限制在第一列和第二列上,这个函数就能正常工作。

0
0 Comments

问题原因:在导入多个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是一个很棒的包,不是每个人都知道它。

0