使用 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))
我正在尝试从 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))