【问题标题】:Import Multiple Sheets into Multiple Data Frames in R将多个工作表导入到 R 中的多个数据框中
【发布时间】:2017-10-11 09:58:00
【问题描述】:

我有一个包含很多工作表的 Excel 文件,我需要一个代码来将每个工作表导入一个单独的数据框中,该数据框架将按照与 Excel 中工作表名称相同的约定命名。

例如,选项卡 A、B、C 将分别导入为数据框 A、B 和 C。

从其他线程中,我看到了如下代码: length(excel_sheets(filename))获取文件的张数

然后创建一个包含每个选项卡的列表:

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
}

但我不知道标签是如何从那里导入到 R 中的。

非常感谢您的帮助。 提前致谢!

【问题讨论】:

    标签: r import-from-excel


    【解决方案1】:

    这是一种方法:

    # write test data
    tf <- writexl::write_xlsx(
      list("the mtcars" = mtcars, "iris data" = iris), 
      tempfile(fileext = ".xlsx")
    )
    
    # read excel sheets
    sheets <- readxl::excel_sheets(tf)
    lst <- lapply(sheets, function(sheet) 
      readxl::read_excel(tf, sheet = sheet)
    )
    names(lst) <- sheets
    
    # shove them into global environment
    list2env(lst, envir = .GlobalEnv)
    

    【讨论】:

      【解决方案2】:

      您的函数读取所有选项卡并将它们保存为单个列表的元素(因为lapply())。您可以使用list2env 将元素从列表中取出:

      your_excel_list <- read_excel_allsheets("test.xlsx")
      list2env(your_excel_list, .GlobalEnv)
      

      您会看到列表中的命名元素现在是全局环境中的数据框(或实际上是 tbl_df

      【讨论】:

        【解决方案3】:

        可以在一行中读取。 应该加载 magrittr 和 dplyr 包。

        data <- lapply(list.files(pattern = "*.xlsx"),function(x) x=read_excel(x,sheet = "(sheetname)")) %>%  bind_rows 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-02
          • 1970-01-01
          • 2012-08-23
          • 1970-01-01
          • 2019-08-25
          • 2010-11-07
          相关资源
          最近更新 更多