Saltar al contenido principal
InicioTutorialesProgramación R

Lectura e importación de archivos Excel en R con readxl

En este artículo, aprenderá a importar archivos Excel en R con la biblioteca readxl.
may 2024  · 31 min leer

Aunque muchas organizaciones almacenan datos en bases de datos y opciones de almacenamiento como AWS, Azure y GCP, las hojas de cálculo de Microsoft Excel siguen siendo muy utilizadas para almacenar conjuntos de datos más pequeños.

La funcionalidad de ciencia de datos de Excel es más limitada que la de R, por lo que resulta útil poder importar datos de hojas de cálculo a R.

En este tutorial veremos cómo leer hojas de cálculo de Excel (así como filas y columnas específicas) en R utilizando el paquete readxl.

Para entenderlo, necesitarás conocimientos básicos de R. 

Para una guía más general sobre la importación de diferentes tipos de archivos en R, lea How to Import Data Into R: Un tutorial.

El archivo Excel

El conjunto de datos que leeremos en R es uno pequeño con sólo dos hojas para demostrar cómo especificar qué hoja leer. Puede consultarse aquí.

La primera hoja es un conjunto de datos de marketing bancario con 45.211 filas y 17 columnas. La siguiente captura de pantalla es del archivo excel "sample.xlsx" y nombre de hoja "bank-full".

Captura de pantalla 2023-03-08 a las 21.05.49 h.png

La segunda hoja es el conjunto de datos de Iris, con 150 filas y 6 columnas, y contiene información sobre los tipos de flor de Iris, como la longitud y anchura de sus sépalos y pétalos.  La siguiente captura de pantalla es del mismo archivo excel, "sample.xlsx" y nombre de hoja "iris". 

Captura de pantalla 2023-03-08 a las 21.08.53 h.png

Resumen de paquetes

Este tutorial utiliza el paquete readxl. El paquete openxlsx es una alternativa decente que también incluye la capacidad de escribir en archivos XLSX, pero tiene una integración menos fuerte con paquetes tidyverse como dplyr y tidyr.

Para leer archivos Excel con el paquete readxl, primero tenemos que instalar el paquete y luego importarlo utilizando la función "library".

install.packages("readxl")

Verá la siguiente salida en la consola, lo que indica que la instalación se ha realizado correctamente.

trying URL 'https://cran.rstudio.com/bin/macosx/big-sur-arm64/contrib/4.2/readxl_1.4.2.tgz'
Content type 'application/x-gzip' length 1545782 bytes (1.5 MB)
==================================================
downloaded 1.5 MB


The downloaded binary packages are in
/var/folders/mq/46mc_8tj06n0wh2xjkk08r140000gn/T//RtmpHIGYqM/downloaded_packages

Para utilizar los métodos "readxl", ejecute el siguiente comando en la consola R.

library(readxl)

Tenga en cuenta que el paquete openxlsx es otra buena alternativa para escribir en archivos XLSX.

Leer el primer cuaderno de ejercicios

Leamos todos los datos de la primera hoja de cálculo, "banco-lleno", con read_xlsx() y sólo el argumento ruta.

bank_df <- read_xlsx(path = "sample.xlsx")

El dato resultante es un tibble.

Screenshot 2023-03-09 at 7.40.15 AM.png

También puede utilizar read_excel() de la misma forma que read_xlsx(), y todos los argumentos que va a ver en las próximas secciones funcionan de forma similar con esta función. read_excel() intentará adivinar si tiene una hoja de cálculo XLSX, o el tipo de hoja de cálculo XLS más antiguo.

bank_df <- read_excel(path = "sample.xlsx")

Screenshot 2023-03-09 at 7.40.15 AM (1).png

Leer otros cuadernos

Ahora vamos a leer todos los datos del segundo libro de trabajo, es decir, "iris" con la función read_xlsx() y el argumento hoja.

iris <- read_xlsx("sample.xlsx", sheet = "iris")

Screenshot 2023-03-09 at 7.12.08 AM.png

También puede especificar el número de hoja en el argumento hoja en lugar del nombre de la hoja.

iris2 <- read_xlsx("sample.xlsx", sheet = 1)

Screenshot 2023-03-09 at 7.12.21 AM.png

Lectura de filas específicas

Vamos a leer filas específicas de un libro de trabajo estableciendo los argumentos skip y n_max. Para saltarse las primeras filas, puede utilizar el argumento skip con un valor igual al número de filas que desea saltarse.

bank_df_s2 <- read_excel("sample.xlsx", sheet = "bank-full", skip = 2)

Tenga en cuenta que el código anterior omite también las cabeceras. En las secciones siguientes aprenderá a especificar cabeceras explícitamente en la función read_xlsx().

Screenshot 2023-03-09 at 7.17.01 AM.png

Del mismo modo, para leer las n primeras filas, especifique el argumento n_max en la función read_xlsx(). El código siguiente lee las 1000 primeras filas de la hoja "bank-full".

bank_df_n1k <- read_excel("sample.xlsx", sheet = "bank-full", n_max = 1000)

Screenshot 2023-03-09 at 7.18.41 AM.png

También puede combinar ambos argumentos para omitir algunas filas y leer un número específico de filas del conjunto de datos restante.

Lectura de células específicas

Mientras que los argumentos "skip" y "n_max" le permiten leer un subconjunto de las filas de los datos, puede leer celdas específicas de un libro de trabajo estableciendo el argumento rango.

Existen dos notaciones para especificar el subconjunto del conjunto de datos:

  • Notación A1 (E4:G8) - A representa la columna y 1 representa el número de fila.
  • Notación R1C1 (R4C5:R8C7) - El número de fila y el número de columna se definen explícitamente

La idea es especificar las coordenadas del rectángulo que desea recortar del conjunto de datos.

Notación 1:

bank_df_range1 <- read_excel("sample.xlsx", sheet = "bank-full", range = "A3:E10")

Notación 2:

bank_df_range2 <- read_excel("sample.xlsx", sheet = "bank-full", 

                 range = "R3C1:R10C5")

Range también le permite incluir el nombre de la hoja en el argumento (ejemplo: wbook!E4:G8).

bank_df_range3 <- read_excel("sample.xlsx", range = "bank-full!R3C1:R10C5")

Lectura de datos sin fila de cabecera

Vamos a leer datos que no tienen fila de cabecera estableciendo el argumento col_names en un vector de caracteres. 

PS: Estamos utilizando el argumento skip primero para eliminar la fila de cabecera.

columns <- c("ID", "Sepal Length", "Sepal Width", "Petal Length", "Petal Width", "Species Name")

iris3 <- read_excel("sample.xlsx", sheet = 2, skip = 1, col_names = columns)

Screenshot 2023-03-09 at 7.19.30 AM.png

Reparación de nombres de cabecera

En la sección anterior, las cabeceras que especificamos estaban separadas por espacios. Puede convertir los nombres de cabecera en variables sintácticas de R con el argumento .name_repair = "universal".

iris4 <- read_excel("sample.xlsx", sheet = 2, skip = 1,
                  col_names = columns, .name_repair = "universal")

Screenshot 2023-03-09 at 7.19.56 AM.png

Especificación de los tipos de columnas

Por defecto, cuando se lee un fichero excel, R adivina el tipo de dato de cada variable.  Observemos los tipos de columna del conjunto de datos del iris leídos utilizando los argumentos por defecto.

sapply(iris, class)
  Id SepalLengthCm  SepalWidthCm PetalLengthCm  PetalWidthCm       Species
    "numeric"     "numeric"     "numeric"     "numeric"     "numeric"   "character" 

Para anular las suposiciones de tipo de columna, puede utilizar el argumento col_types.

iris5 <- read_excel("sample.xlsx", sheet = 2,
      col_types = c("numeric", "numeric", "numeric", "numeric", "numeric", "text"))

sapply(iris5, class)
    Id SepalLengthCm  SepalWidthCm PetalLengthCm  PetalWidthCm       Species
    "numeric"     "numeric"     "numeric"     "numeric"     "numeric"   "character" 

Screenshot 2023-03-09 at 7.20.14 AM.png

También puede dejar que R adivine los tipos de columna de las variables seleccionadas especificando el valor col_types como "guess" para una columna en particular.

iris6 <- read_excel("sample.xlsx", sheet = 2,
        col_types = c("guess", "numeric", "numeric", "numeric", "numeric", "text"))

sapply(iris6, class)
Id SepalLengthCm  SepalWidthCm PetalLengthCm  PetalWidthCm       Species
    "numeric"     "numeric"     "numeric"     "numeric"     "numeric"   "character" 

Screenshot 2023-03-09 at 7.20.27 AM.png

Saltar columnas

Aunque a menudo se oye decir que cuantos más datos, mejor. Pero en muchos casos de uso, se encuentra que algunas de las variables/columnas no contienen ninguna señal, que puede ser debido a cualquiera de las siguientes razones. 

  • alta cardinalidad: casi todos los valores son diferentes
  • cardinalidad cero: todos los valores son iguales
  • sin relación con el caso de uso empresarial
  • demasiados valores perdidos
  • demasiados valores basura

Puede omitir la lectura de algunas de las columnas configurando col_types como "skip", tal y como se muestra a continuación.

iris7 <- read_excel("sample.xlsx", sheet = 2,
            col_types = c("numeric", "skip", "skip", "numeric", "numeric", "text"))

sapply(iris7, class)

Captura de pantalla 2023-03-09 a las 7.20.36 AM.pngTakeIt To The Next Level

En un mundo en el que los datos se generan a un ritmo vertiginoso y en formas muy variadas, su lenguaje de programación debe soportar la lectura de estos tipos de datos. R es uno de esos potentes lenguajes que apoyan este empeño. Inscríbase en el curso "Introducción a la importación de datos en R" para aprender cómo R ofrece paquetes para importar conjuntos de datos variados. Este curso ofrece tutoriales y cuestionarios para reforzar su comprensión de la importación de datos en R.

Temas

Más información sobre R y hojas de cálculo

Certificación disponible

Course

Análisis de datos en Google Sheets

3 hr
12K
Aprende a utilizar las Hojas de cálculo de Google para limpiar, analizar y extraer información de los datos. Descubre cómo ordenar, filtrar y utilizar VLOOKUP para combinar datos.
See DetailsRight Arrow
Start Course
Ver másRight Arrow
Relacionado

blog

Las 25 mejores preguntas para entrevistas sobre Excel para todos los niveles

Una guía de las preguntas más habituales en las entrevistas de Excel para que los usuarios principiantes, intermedios y avanzados superen la entrevista técnica.
Chloe Lubin's photo

Chloe Lubin

17 min

blog

¿Qué es R? - Introducción al motor de cálculo estadístico

Aprenda todo lo que necesita saber sobre el lenguaje de programación R y descubra por qué es el lenguaje más utilizado en la ciencia de datos.
Summer Worsley's photo

Summer Worsley

18 min

R Project

blog

Las 8 mejores ideas de proyectos R para 2023

Descubra qué es R y todas las ventajas de utilizarlo, a la vez que ofrece ejemplos y nuevas ideas para un proyecto.
Elena Kosourova 's photo

Elena Kosourova

16 min

tutorial

Programación funcional frente a programación orientada a objetos en el análisis de datos

Explore dos de los paradigmas de programación más utilizados en la ciencia de datos: la programación orientada a objetos y la programación funcional.
Amberle McKee's photo

Amberle McKee

15 min

tutorial

K-Nearest Neighbors (KNN) Clasificación con R Tutorial

Aprenda a utilizar los paquetes 'class' y 'caret' de R, a ajustar los hiperparámetros y a evaluar el rendimiento del modelo.
Abid Ali Awan's photo

Abid Ali Awan

11 min

tutorial

Guía de expresiones regulares en R

Explore las expresiones regulares en R, por qué son importantes, las herramientas y funciones para trabajar con ellas, patrones regex comunes y cómo utilizarlos.
Elena Kosourova 's photo

Elena Kosourova

16 min

See MoreSee More