Сохранить таблицу Excel как.csv с R?

каков самый простой способ преобразования большой таблицы Excel с несколькими листами в .CSV-файлы в R?

обратите внимание, что я протестировал XLConnect и XLSX и обнаружил, что мои листы Excel вызывают его сбой. Поэтому я специально ищу решение, которое не использует пакет XLConnect или XLSX.

3 ответов


http://rwiki.sciviews.org/doku.php?id=tips:data-io:ms_windows

EDIT: для обращения к чтению.опция xlsx:

Если у вас работает Perl, вам нужна текущая версия gdata

require(gdata)
installXLSXsupport()   #now the example from help(read.xls)
    # load the third worksheet, skipping the first two non-data lines...
    if( 'XLSX' %in% xlsFormats() )  # if XLSX is supported..
      data <- read.xls(exampleFile2007, sheet="Sheet with initial text", skip=2)
 data
#-----------------------
   X       X.1 D E.  F  G Factor
1 NA  FirstRow 1 NA NA NA   Red 
2 NA SecondRow 2  1 NA NA Green 
3 NA  ThirdRow 3  2  1 NA   Red 
4 NA FourthRow 4  3  2  1 Black 
#------------------------
write.csv(data)

Это было сделано на Mac, и до этого вопроса я всегда спотыкался на этапе installXLSXsupport (), так как я всегда получал ошибку. На этот раз я запустил Perl из командной строки терминала и получил успех после первой настройки моего личного конфигурация, определяющая зеркала CPAN на моем континенте, и я оставил perl работать.


вот цикл, чтобы записать все листы:

require(gdata)
## install support for xlsx files
installXLSXsupport()
excelFile <- ("/full/path/to/excelFile.xlsx")
## note that the perl scripts that gdata uses do not cope well will tilde expansion
## on *nix machines. So use the full path. 
numSheets <- sheetCount(excelFile, verbose=TRUE)

for ( i in 1:numSheets) {
  mySheet <- read.xls(excelFile, sheet=i)
  write.csv(mySheet, file=paste(i, "csv", sep="."), row.names=FALSE)
}

обновленный ответ на основе пакета readxl.

library("readxl")

#function to read all sheets of a workbook
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
}

sheetnames <- read_excel_allsheets("excelFile.xlsx")
names(sheetnames)