使用 lapply 函数从 Excel 导入数据

Using the lapply function to import data from Excel

我正在尝试从 150 个不同的文件导入数据,因为原始 STATA 命令没有附加功能或与 outreg2 命令兼容。我决定把它带到 R,因为我更熟悉那里的导入和导出。

每个 .xlsx 文件都包含完全相同的内容 format 仅更改值和标签说明。正好有150个。

到目前为止我做到了:

#library(readxl)
file.list <- list.files(pattern='*.xlsx', recursive = TRUE)
df.list <- lapply(file.list, read_excel)

#library(dplyr)
df1 <- bind_rows(df.list, .id= "id")

这个 returns 数据框如下所示: Event study results sheet 1。这正是我想要的结果。

但是,lapply 命令读取的文件还包含 sheet 数字 2、3 和 4,我想以类似的方式导入它们(创建附加表,如图片)。只需将函数调整为:

df.list2 <- lapply(file.list, read_excel(sheet = 2))

遗憾的是不起作用,需要我添加一个“路径”参数。添加它:

df.list2 <- lapply(file.list, read_excel(path = "D:/sietse/Documents/RUG/Master/Thesis/Data/STATA", sheet = 2))

给我错误:

Error in file(con, "rb") : cannot open the connection In addition: Warning message: In file(con, "rb") : cannot open file 'D:/sietse/Documents/RUG/Master/Thesis/Data/STATA': Permission denied

经过一些研究,我知道这与文件名的规范有关,但是;指定任何文件名都会破坏函数的目的,并给我留下很多手动工作。

有谁知道如何解决这个问题或更好的方法吗?非常感谢。

您可以像这样添加 sheet 作为参数:

df.list <- lapply(file.list, read_excel, sheet=2)

或者,像这样:

df.list <- lapply(file.list, function(f) read_excel(f, sheet=2))