R – 导入并合并多个Excel文件并添加文件源variables

在过去的一年中,我曾经使用R来做各种各样的事情,但是由于可用的包和function的数量,我仍然是一个初学者。 我相信R会允许我用最less的代码去做我想做的事情,但是我正在挣扎。

我想做的事:

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

  1. 从Excel中将数据导入到R中
  2. 为每个包含文件名的文件添加一个variables
  3. 合并所有的数据(添加意见/行 – 不需要匹配variables)

我将需要为多组数据执行此操作,所以我正试图尽可能简单和容易地进行复制。

数据看起来像什么:

第1行标题
第2行 StudentID Var1 Var2 Var3 Var4 Var5
第3行 11234 1 9/8/2011 343 159-167 32
第4行 11235 2 9/16/2011 112 152-160 12
第5行 11236 1 9/8/2011 325 164-171 44

第1行没有意义,第2行包含variables名称。 这些文件具有不同的行数。

我到目前为止:

起初,我只是试图从Excel中导入数据。 使用XLSX包,这很好地工作:

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

接下来,我着重解决如何合并文件(也认为这是我应该将文件名variables添加到数据文件)。 这是我卡住的地方。

 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)); 

我设置了我的目录,制作一个所有文件夹中excel文件名的列表,然后尝试用一个variables来合并文件名。

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

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

我知道我的应用程序有一个问题lapply – startrow不被识别为一个选项,FILENAMEVAR试图合并5个样本文件名列表,而不是添加一个包含文件名的列。

接下来是什么?

如果任何人都可以提及我有用的资源或function,批评我到目前为止,或指向一个新的方向,这将是非常感谢!

我会发表我的评论(与bdemerast接字错误)。 该解决scheme未经testing,因为xlsx不能在我的机器上快乐地运行

您需要将单个FILENAMEVAR传递给read.xlsx2

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