【问题标题】:Import multiple sheets from excel spreadsheet into r将多张工作表从 excel 电子表格导入 r
【发布时间】:2018-09-30 04:45:44
【问题描述】:

我想从单个 .xlsx 文件中导入多个工作表,这些工作表由工作表名称中的公共字符串选择,并将它们连接到单个数据框中。例如,如果我有一个 Excel 文件(“data.xlsx”),其中包含名为 samples1、samples2、samples3、controls1、controls2、controls3 的工作表。我想列出工作表名称,例如:

sheet_list <- lapply(excel_sheets('data.xlsx'), read_excel, path = 'data.xlsx')

然后,我想导入名称中包含“samples”的所有工作表,并将它们绑定到名为“samples”的数据框中。我怎样才能有效地做到这一点?

【问题讨论】:

  • 您可能还想查看openxlsx 包,因为它提供了许多方便的功能,用于从 Excel 读取数据,包括工作簿表格对象,以及导出到 Excel。

标签: r dataframe import readxl


【解决方案1】:

你很亲密!您可以使用lapply 等使用base R 来完成此任务,但我通常使用purrr 包执行此类任务。

library(purrr)
library(readxl)    

sheets <- excel_sheets('data.xlsx')

sample_sheets <- sheets[grepl("samples", sheets)]

sheet_df <- map_dfr(sample_sheets, ~read_excel(path = 'data.xlsx', sheet = .x), id = .x)

这样做:

  1. 获取工作表的名称。
  2. 使用grepl 将工作表子集为仅在名称中包含“样本”的工作表。
  3. 使用map_dfr 遍历样本表,读取每个样本表并分配一个与表名称相同的 id 列,然后按行将所有结果绑定在一起并返回一个数据框。

【讨论】:

  • 申请数据时收到错误信息Error in read_excel(path = "covid19_mph.xlsx", sheet = .x, id = .x) : unused argument (id = .x)
  • id 参数应该是map_dfr 的一部分,而不是read_excel。答案已编辑。
【解决方案2】:

这是你想要的吗?

path <- "C:\\your_path_here\\test.xlsx"

path %>% 
  excel_sheets() %>% 
  set_names() %>% 
  map(read_excel, path = path)

【讨论】:

    【解决方案3】:

    试试这个

    library(readxl)
    list <- excel_sheets("path_to_excel.xlsx")
    list_samples <- list[grepl("samples", list)]
    df <- rbind(lapply(list_samples, function(x) read_excel("path_to_excel.xlsx", sheet = x)))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-09
      • 2013-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-15
      相关资源
      最近更新 更多