如何在R中导入多个包含多个工作表的Excel文件
如何在R中导入多个包含多个工作表的Excel文件
我有60个Excel文件,每个文件有8个工作表。每个文件的工作表都相同,但每个文件的列数不同。
我遇到了一些有助于导入单个具有多个工作表的Excel文件的帖子。但我不想为60个文件重复这样做。有没有办法一次导入所有60个文件的所有工作表?
我遇到了这篇文章
https://it.unt.edu/sites/default/files/importmultipleexcel_l_jds_aug2013.pdf。
但他们在考虑相同的列并合并所有内容,而我不想这样做。我只想导入。
在R中导入多个包含多个工作表的Excel文件的问题可能出现的原因是想要同时处理多个Excel文件,并且每个Excel文件中包含多个工作表的数据。解决这个问题的方法是使用readxl包中的函数read_excel_allsheets来读取多个工作表的数据,并将其保存为一个列表。
下面是解决该问题的代码:
read_excel_allsheets <- function(filename) { sheets <- readxl::excel_sheets(filename) x <- lapply(sheets, function(X) readxl::read_excel(filename, sheet = X)) names(x) <- sheets x } files <- list.files(path = "/directory/in/question/", pattern = "*.xlsx", full.names = TRUE) out <- lapply(files, read_excel_allsheets) names(out) <- basename(files)
以上代码定义了一个名为read_excel_allsheets的函数,该函数接受一个文件名作为输入,并使用readxl包中的excel_sheets函数读取该文件中的所有工作表名称。然后,使用lapply函数遍历每个工作表,并使用readxl包中的read_excel函数读取每个工作表的数据。最后,将每个工作表的数据保存在一个列表中,并为列表中的每个元素命名为对应的工作表名称。
接下来,使用list.files函数获取指定目录中所有的xlsx文件,并将文件的全路径保存在一个列表中。然后,使用lapply函数遍历每个文件,并使用read_excel_allsheets函数读取每个文件的工作表数据。最后,将每个文件的工作表数据保存在一个列表中,并为列表中的每个元素命名为对应的文件名。
通过以上代码,我们可以在R中导入多个包含多个工作表的Excel文件,并将每个工作表的数据保存在一个列表中,方便后续的数据处理和分析。