Как одновременно читать в листах Excel и изменять новый столбец с помощью purrr / dplyr? - PullRequest
0 голосов
/ 23 сентября 2018

Я пытаюсь прочитать набор данных временного ряда, разбросанный по нескольким годам (поэтому названия листов соответствуют годам).

Я хочу прочитать на каждом листе, а затем изменить новый столбец с именем "year", который соответствует имени листа.Я не уверен, как это сделать одним махом.

Все, что у меня сейчас есть, это:

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

1 Ответ

0 голосов
/ 23 сентября 2018

Вот одно из возможных решений.

Допустим, у вас есть файл Excel "ts.xlsx" с 3 листами ("2016", "2017", "2018").

Каждый лист имеет 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...