Apéndice 1: el tidyverse
A lo largo de este libro se han presentado en paralelo cierto tipo de problemas —por ejemplo, cómo ordenar una tabla o cómo procesarla por trozos— junto con herramientas útiles para resolverlos. Los problemas son conceptuales —incluso podría decirse que universales— y se dan tanto en R como en Python y otras tecnologías para el procesamiento de datos. Por su parte, las herramientas son, podría decirse, circuntanciales: cambian en el tiempo, son reemplazadas por otras, etc.
Metafóricamente, a lo largo del libro hemos aprendido a clavar un clavo con un martillo determinado. Pero lo relevante no es saber usar ese martillo concreto sino saber clavar clavos con martillos, aunque tengan formas, tamaños y colores distintos.
Así, de un tiempo a esta parte se ha popularizado el uso del llamado tidyverse, que no es otra cosa que un dialecto de R que permite realizar las operaciones con datos cubiertas en los capítulos previos usando una sintaxis distinta.
El tidyverse es, por una parte, un conjunto de paquetes de R (que incluye algunos muy populares como dplyr
, purr
o readr
). Por otro, es un dialecto de R caracterizado por:
- El uso de funciones simples cuyos nombres son verbos (
gather
,filter
,select
,mutate
, etc.) - El uso generalizado de los pipes para combinar dichas funciones simples en expresiones complejas pero, a la vez, legibles.
- La estructura de datos por excelencia es la tabla en detrimento de vectores, listas y otras estructuras de datos que, aunque es cierto que tienen un uso más esporádico en el análisis de datos, tienen papeles concretos muy importantes.
El tidyverse no es el único dialecto popular de R. Por ejemplo, el paquete data.table
propone otro dialecto con características muy distintas. El código en dicho dialecto es mucho menos legible pero tiene una ventaja importante: es increíblemente rápido y gestiona muy bien la memoria. Es un paquete (o dialecto) con el que conviene familiarizarse para trabajar con conjuntos de datos muy grandes, de millones, decenas de millones o, incluso de cientos de millones de filas.
El nombre tidyverse es una combinación de dos términos, tidy y verse. El segundo de ellos hace referencia a las funciones-verbos y la particular forma de combinarlos que promueve la filosofía subyacente a esta colección de paquetes. Tidy, por su parte, hace referencia al artículo (ya citado previamente) Tidy Data del autor del tidyverse, Hadley Wickham. En el mismo artículo, el autor cita los paquetes reshape2
y plyr
como manifestación de esa filosofía de los datos que propugna el artículo. Dentro del tidyverse, sin embargo, han acabado reemplazados. En primer lugar, reshape2
ha sido desplazado por tidyr
. tidyr
propuso originalmente ne los verbos gather
y spread
como alternativas a melt
y dcast
respectivamente para, posteriormente, cambiar de nuevo de opinión y reemplazarlos por pivot_longer
y pivot_wider
.
dplyr
, por su parte, es una reescritura completa de plyr
. Una de las grandes diferencias entre ambos paquetes no es tanto lo que dplyr
incorpora de nuevo sino aquello de lo que se ha desprendido: utilidades para manipular estructuras de datos que no sean tabulares. Es cierto que un porcentaje muy elevado del trabajo de un profesional de los datos consiste en la manipulación de tablas. Pero también hay que recordar que dicho trabajo se complica enormemente si solo puede manipular tablas.
En el presente libro no se tratará más el tidyverse, pero sí quiere emplazar al lector a explorarlo por su cuenta. Eso sí, teniendo muy presente que aprenderlo no es aprender de cero sino traducir y trasladar lo aprendido en los capítulos anteriores a una sintaxis nueva, diferente y relativamente cómoda. Que es mucho más próxima, además, a la que se usa en Python (con Pandas).