Leer un archivo de Excel directamente desde un script R

Resuelto waanders asked hace 54 años • 12 respuestas

¿Cómo puedo leer un archivo de Excel directamente en R? ¿O debería exportar primero los datos a un archivo de texto o CSV e importar ese archivo a R?

waanders avatar Jan 01 '70 08:01 waanders
Aceptado

Permítanme reiterar lo que recomendó @Chase: use XLConnect .

Las razones para utilizar XLConnect son, en mi opinión:

  1. Plataforma cruzada. XLConnect está escrito en Java y, por lo tanto, se ejecutará en Win, Linux y Mac sin cambios en su código R (excepto posiblemente cadenas de ruta)
  2. Nada más que cargar. Simplemente instale XLConnect y siga con su vida.
  3. Solo mencionaste leer archivos de Excel, pero XLConnect también escribirá archivos de Excel, incluido el cambio de formato de celda. Y lo hará desde Linux o Mac, no sólo desde Win.

XLConnect es algo nuevo en comparación con otras soluciones, por lo que se menciona con menos frecuencia en publicaciones de blogs y documentos de referencia. Para mi ha sido muy útil.

JD Long avatar May 23 '2011 16:05 JD Long

Y ahora está readxl :

El paquete readxl facilita la obtención de datos de Excel a R. En comparación con los paquetes existentes (por ejemplo, gdata, xlsx, xlsReadWrite, etc.), readxl no tiene dependencias externas, por lo que es fácil de instalar y usar en todos los sistemas operativos. Está diseñado para trabajar con datos tabulares almacenados en una sola hoja.

readxl está construido sobre la biblioteca C libxls, que abstrae muchas de las complejidades del formato binario subyacente.

Es compatible tanto con el formato heredado .xls como con .xlsx.

readxl está disponible en CRAN, o puedes instalarlo desde github con:

# install.packages("devtools")
devtools::install_github("hadley/readxl")

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")

Tenga en cuenta que, si bien la descripción dice "sin dependencias externas", sí requiere el Rcpppaquete , que a su vez requiere Rtools (para Windows) o Xcode (para OSX), que son dependencias externas a R. Aunque muchas personas los tienen instalados por otras razones. .

Ben avatar Mar 17 '2015 19:03 Ben

Sí. Consulte la página correspondiente en la wiki de R. Respuesta corta: read.xlsel gdatapaquete funciona la mayor parte del tiempo (aunque necesita tener Perl instalado en su sistema; generalmente ya es cierto en MacOS y Linux, pero requiere un paso adicional en Windows, es decir, consulte http://strawberryperl.com/ ). Hay varias advertencias y alternativas enumeradas en la página wiki de R.

La única razón que veo para no hacer esto directamente es que quizás quieras examinar la hoja de cálculo para ver si tiene fallos (encabezados extraños, varias hojas de trabajo [solo puedes leer una a la vez, aunque obviamente puedes recorrerlas todas] , parcelas incluidas, etc.). Pero para una hoja de cálculo rectangular bien formada con números simples y datos de caracteres (es decir, números sin formato de coma, fechas, fórmulas con errores de división por cero, valores faltantes, etc., etc.) generalmente no tengo ningún problema. con este proceso.

Ben Bolker avatar May 23 '2011 15:05 Ben Bolker