【问题标题】:How to simultaneously read in excel sheets and mutate a new column with purrr/dplyr?如何同时读取 excel 工作表并使用 purrr/dplyr 改变新列?
【发布时间】:2018-09-22 21:24:39
【问题描述】:

我正在尝试读取分布多年的时间序列数据集(因此工作表名称是相应的年份)。

我想阅读每张纸,然后改变一个名为“年”的新列,它等于工作表名称。我不确定如何一口气做到这一点。

我现在只有这个:

map(excel_sheets(path), read_excel, path = path, skip = 1)

【问题讨论】:

    标签: r excel purrr dplyr


    【解决方案1】:

    这是一种可能的解决方案。

    假设您有包含 3 张工作表(“2016”、“2017”、“2018”)的 Excel 文件“ts.xlsx”。

    每个工作表在“A”列中有 3 个值:

    “2016” - (1, 2, 3);

    “2017” - (4, 5, 6);

    “2018” - (7, 8, 9)。

    要将这些数据读入一个包含两列(“数据”、“年份”)的表中,您可以使用以下 R 代码:

    # 1. Library
    library(xlsx)
    
    # 2. Excel file
    excel_file <- "ts.xlsx"
    
    # 3. Read Excel file
    df <- loadWorkbook(excel_file)
    
    # 4. Names and number of sheets
    sheets_names <- names(getSheets(df))
    sheets_count <- df$getNumberOfSheets()
    
    # 5. Read Excel file by sheets
    for(i in 1:sheets_count) {
    
      # 5.1. Read one sheet
      df_sheet_year <- read.xlsx(excel_file, i, header = F)
      df_sheet_year$name <- sheets_names[i]
    
      # 5.2. Merge with result dataset
      if(i == 1) {
        df_sheet <- df_sheet_year
      } else {
        df_sheet <- rbind(df_sheet, df_sheet_year)
      }
    }
    
    # 6. Rename features
    colnames(df_sheet) <- c("data", "year")
    
    # 7. Check result dataset
    df_sheet
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多