R - 导入和合并多个Excel文件并添加文件源变量

ESm*_*988 5 import excel merge r import-from-excel

在过去的一年里我使用过R来做各种各样的事情,但是由于可用的软件包和功能的数量,我仍然是一个初学者.我相信R会允许我用最少的代码做我想做的事,但我很挣扎.

我想做的事:

我有大约一百个不同的excel文件,其中包含学生的数据.每个excel文件代表不同的学校,但包含相同的变量.我需要:

  1. 从Excel导入数据到R中
  2. 将变量添加到包含文件名的每个文件
  3. 合并所有数据(添加观察/行 - 不需要匹配变量)

我需要为多组数据执行此操作,因此我尝试使其尽可能简单且易于复制.

数据看起来像什么:

行1     标题
行2     StudentID VAR1 VAR2 VAR3 VAR4 VAR5
行3     11234 1 2011/9/8 343 159-167 32
行4     11235 2 2011/9/16 112 152-160 12
行5     11236 1 2011/9/8 325 164 -171 44

第1行没有意义,第2行包含变量名.文件具有不同的行数.

到目前为止我所拥有的:

起初我只是尝试从excel导入数据.使用XLSX包,这很好用:

dat <- read.xlsx2("FILENAME.xlsx", sheetIndex=1, 
                  sheetName=NULL, startRow=2, 
                  endRow=NULL, as.data.frame=TRUE, 
                  header=TRUE)
Run Code Online (Sandbox Code Playgroud)

接下来,我把重点放在搞清楚如何合并文件(也认为这是我应该的文件名变量添加到数据文件).这是我被卡住的地方.

setwd("FILE_PATH_TO_EXCEL_DIRECTORY")
filenames <- list.files(pattern=".xls")
do.call("rbind", lapply(filenames, read.xlsx2, sheetIndex=1, colIndex=6, header=TRUE, startrow=2, FILENAMEVAR=filenames));
Run Code Online (Sandbox Code Playgroud)

我把我的目录,使所有的文件夹中的Excel文件名列表,然后尝试使用变量作为文件名,以将它们合并在一个语句.

当我这样做时,我收到以下错误:

data.frame(res,...)中的错误:参数意味着行数不同:616,1,5

我知道有我lapply的应用程序中的问题 - STARTROW没有被识别为选项和FILENAMEVAR试图合并5个采样列表中的文件,而不是添加包含文件名的列.

接下来是什么?

如果任何人都可以参考我一个有用的资源或功能,批判什么,我有这么远,还是指向我一个新的方向,这将不胜感激!

mne*_*nel 4

我将发表我的评论(bdemerast 会发现拼写错误)。该解决方案未经测试,因为xlsx无法在我的机器上正常运行

您需要将单个传递FILENAMEVARread.xlsx2.

lapply(filenames, function(x) read.xlsx2(file=x, sheetIndex=1, colIndex=6, header=TRUE, startRow=2, FILENAMEVAR=x))
Run Code Online (Sandbox Code Playgroud)