data.table :: fread Читать все листы в книге Excel - PullRequest
1 голос
/ 11 июня 2019

Мой документ Excel my.xlsx имеет два листа с именами Лист1 и Лист2 . Я хочу прочитать все листы в книге Excel, используя функцию fread из пакета data.table R. Следующий код просто прочитал активную таблицу. Хотите знать, как читать все рабочие листы, не зная их имен. Спасибо

df3 <- data.table::fread("in2csv my.xlsx")
> names(df3)
[1] "A" "B"
> df3
   A  B
1: 1  2
2: 2  4
3: 3  6
4: 4  8
5: 5 10

1 Ответ

2 голосов
/ 11 июня 2019

Я использовал openxlsx::read.xlsx в последний раз, когда мне нужно было прочитать много листов из XLSX.

#install.packages("openxlsx")
library(openxlsx)
#?openxlsx::read.xlsx

#using file chooser:
filename <- file.choose()
#or hard coded file name:
#filename <- "filename.xlsx"

#get all the sheet names from the workbook
SheetNames<-getSheetNames(filename)

# loop through each sheet in the workbook
for (i in SheetNames){

  #Read the i'th sheet
  tmp_sheet<-openxlsx::read.xlsx(filename, i)

  #if the input file exists, append the new data;; else use the first sheet to initialize the input file
  ifelse(exists("input"),
         input<-rbind(input, tmp_sheet),
         input<-tmp_sheet)
}

Примечание. Предполагается, что каждый лист имеет одинаковую структуру столбцов и типы данных. Вам может потребоваться стандартизировать \ нормализовать данные (например, tmp_sheet <- as.data.frame(sapply(tmp_sheet,as.character), stringsAsFactors=FALSE)) или загрузить каждый лист в свой собственный фрейм данных и выполнить дополнительную обработку перед объединением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...