Pregunta Importación de archivos de Excel en R, xlsx o xls


Por favor alguien puede ayudarme a la mejor manera de importar un archivo excel 2007 (.xlsx) en R. He intentado varios métodos y ninguno parece funcionar. Me actualicé a 2.13.1, Windows XP, xlsx 0.3.0, no sé por qué sigue apareciendo el error. Lo intenté:

AB<-read.xlsx("C:/AB_DNA_Tag_Numbers.xlsx","DNA_Tag_Numbers")

O

AB<-read.xlsx("C:/AB_DNA_Tag_Numbers.xlsx",1)

pero obtengo el error:

 Error in .jnew("java/io/FileInputStream", file) : 
  java.io.FileNotFoundException: C:\AB_DNA_Tag_Numbers.xlsx (The system cannot find the file specified)

Gracias.


75
2017-08-13 07:57


origen


Respuestas:


Para una solución libre de complejas dependencias externas *, ahora existe readxl:

El paquete readxl hace que sea fácil obtener datos de Excel y en R.   Comparado con muchos de los paquetes existentes (por ejemplo, gdata, xlsx,   xlsReadWrite) readxl no tiene dependencias externas por lo que es fácil   instalar y usar en todos los sistemas operativos. Está diseñado para trabajar con   datos tabulares almacenados en una sola hoja.

Readxl admite tanto el formato .xls heredado como el moderno basado en xml   formato .xlsx El soporte .xls es posible con la librería libxls C,   que abstrae muchas de las complejidades del binario subyacente   formato. Para analizar .xlsx, utilizamos la biblioteca RapidXML C ++.

Se puede instalar así:

install.packages("readxl") # CRAN version

o

devtools::install_github("hadley/readxl") # development version

Uso

library(readxl)

# read_excel reads both xls and xlsx files
read_excel("my-old-spreadsheet.xls")
read_excel("my-new-spreadsheet.xlsx")

# Specify sheet with a number or name
read_excel("my-spreadsheet.xls", sheet = "data")
read_excel("my-spreadsheet.xls", sheet = 2)

# If NAs are represented by something other than blank cells,
# set the na argument
read_excel("my-spreadsheet.xls", na = "NA")

* no estrictamente cierto, requiere el Rcpp paquete, que a su vez requiere Rtools (para Windows) o Xcode (para OSX), que son dependencias externas a R. Pero no requieren ningún toque de ruta, etc., por lo que es una ventaja sobre las dependencias de Java y Perl.

Actualizar Ahora está el rexcel paquete. Esto promete obtener formato de Excel, funciones y muchos otros tipos de información del archivo Excel y en R.


76
2018-03-19 07:11



Es posible que también desee probar el paquete XLConnect. He tenido mejor suerte que xlsx (y además puede leer archivos .xls).

library(XLConnect)
theData <- readWorksheet(loadWorkbook("C:/AB_DNA_Tag_Numbers.xlsx"),sheet=1)

Además, si tiene problemas para que su archivo no se encuentre, intente seleccionarlo con file.choose ().


33
2018-04-09 21:05



Definitivamente probaría el read.xls función en el gdata paquete, que es considerablemente más maduro que el xlsx paquete. Puede requerir Perl ...


20
2017-08-14 23:06



Actualizar

Como la respuesta a continuación ahora está un poco desactualizada, me gustaría llamar la atención sobre el readxl paquete. Si la hoja de Excel está bien formateada / tendida, entonces ahora usaría readxl para leer del libro de trabajo. Si las hojas están mal formateadas / tendidas, aún así exportaría a CSV y luego manejaría los problemas en R, ya sea a través de read.csv() o simple viejo readLines().

Original

Mi forma preferida es guardar hojas de Excel individuales en archivos de valores separados por comas (CSV). En Windows, estos archivos están asociados con Excel por lo que no pierde la "característica" de doble clic en abrir en Excel.

Los archivos CSV se pueden leer en R usando read.csv(), o, si se encuentra en una ubicación o usando una computadora configurada con algunos ajustes europeos (donde , se usa como el lugar decimal), usando read.csv2().

Estas funciones tienen valores predeterminados razonables que hacen que la lectura de archivos con el formato adecuado sea simple. Simplemente conserve cualquier etiqueta para muestras o variables en la primera fila o columna.

Los beneficios adicionales de almacenar archivos en CSV son que, como los archivos son de texto plano, se pueden pasar fácilmente y puede estar seguro de que se abrirán en cualquier lugar; uno no necesita Excel para mirar o editar los datos.


18
2017-08-13 08:17



Ejemplo 2012:

library("xlsx")
FirstTable <- read.xlsx("MyExcelFile.xlsx", 1 , stringsAsFactors=F)
SecondTable <- read.xlsx("MyExcelFile.xlsx", 2 , stringsAsFactors=F)
  • Yo probaría el paquete 'xlsx' porque es fácil de manejar y parece lo suficientemente maduro
  • funcionó bien para mí y no necesitaba ningún complemento como Perl o lo que sea

Ejemplo 2015: 

library("readxl")
FirstTable  <- read_excel("MyExcelFile.xlsx", 1)
SecondTable <- read_excel("MyExcelFile.xlsx", 2)
  • hoy en día yo uso readxl y he tenido una buena experiencia con eso.
  • no se necesitan materiales adicionales
  • Buen rendimiento

17
2017-09-25 10:31



Este nuevo paquete se ve bien http://cran.r-project.org/web/packages/openxlsx/openxlsx.pdf No requiere rJava y está usando 'Rcpp' para velocidad.


12
2018-04-22 03:37



Recientemente descubrí la función de Schaun Wheeler para importar archivos de Excel en R después de darse cuenta de que el paquete xlxs no se había actualizado para R 3.1.0.

https://gist.github.com/schaunwheeler/5825002

El nombre de archivo debe tener la extensión ".xlsx" y el archivo no se puede abrir cuando ejecuta la función.

Esta función es realmente útil para acceder al trabajo de otras personas. Las principales ventajas sobre el uso de la función read.csv son cuando

  • Importación de múltiples archivos de Excel
  • Importación de archivos de gran tamaño
  • Archivos que se actualizan regularmente

El uso de la función read.csv requiere la apertura y el guardado manual de cada documento de Excel que consume mucho tiempo y es muy aburrido. Usar la función de Schaun para automatizar el flujo de trabajo es, por lo tanto, una ayuda enorme.

Grandes apoyos para Schaun por esta solución.


3
2018-05-28 06:45



Si se encuentra con el mismo problema y R le está dando un error, no pudo encontrar la función ".jnew" - Simplemente instale la biblioteca rJava. O si ya lo tienes, ejecuta la biblioteca de líneas (rJava). Ese debería ser el problema.

Además, debe quedar claro para todos que es más fácil trabajar con archivos csv y txt, pero la vida no es fácil ya veces solo tiene que abrir un xlsx.


3
2018-04-09 19:35