Datascience (R),  destacadas,  Negocio

¿Tablas bonitas en R? Sí, es posible

Cuando trabajas con R para explorar, analizar, transformar e incluso visualizar datos, tarde o temprano tendrás la necesidad de recoger tus frutos en un informe, artículo, post, etc.

Si el resultado que quieres plasmar viene en forma de tabla, los dataframes o los tibbles de R no son demasiado agraciados a nivel estético.

Este miércoles descubrí el paquete gt, disponible en CRAN, que pone a nuestra disposición unas cuantas herramientas para hacer tablas atractivas y eficaces.

install.packages(“gt”)

El nombre, abreviatura de “grammar of tables” es toda una declaración de intenciones. Sí, pretende ser a las tablas lo que ggplot2 es a los gráficos con su implementación del Grammar of Graphics de Leland Wilkinson.

La tabla se va construyendo capa a capa de la misma forma que en ggplot2. De manera sencilla, encadenando diferentes capas, vamos transformando nuestra tabla.

En este caso, el operador que une una tabla con otra no es el símbolo “+” utilizado por ggplot2 sino el operador tubería (pipeline%>%).

¿Probamos?

Para probar el paquete he utilizado un pequeño dataset que me he creado yo mismo a partir de los personajes del juego de mesa “Quién es quién”.

Esta es la tabla original, sin formatear.

A partir de esta tabla base, he realizado las siguientes transformaciones:

  • Añadir un encabezado.
  • Agrupar los personajes por la inicial de su nombre.
  • Colorear las celdas en función del valor de las columnas.
  • Añadir una nota al pie de la tabla.

He tenido que realizar una transformación (añadir una columna con la inicial de cada nombre):

datos$inicial <- stringr::str_sub(datos$Nombre, 1, 1)

Este es el código empleado para formatear la tabla:

datos2 <- datos %>%
dplyr::arrange(Nombre) %>%
gt(rowname_col = “row”, groupname_col = “inicial”) %>%
tab_header(title = “Los personajes de Quién es Quién”) %>%
data_color(
columns = vars(Gafas, Sombrero, Barba, Bigote, Pelo, Ojos, Género),
colors = scales::col_factor(
palette = paletteer::paletteer_d(
palette = “colRoz::l.vestiens”
) %>% as.character(),
domain = NULL
),
alpha = 0.8
) %>%
tab_source_note(md(“Más información en www.datacy.es”))

datos2

Y este es el resultado.

Para poder exportar el resultado a jpg, png, html, etc, he nombrado la tabla como datos2 y he utilizado la función gtsave():

gtsave(datos2, “resultado.png”)

Me ha parecido un paquete muy completo, muy intuitivo (sobre todo si se está acostumbrado a utilizar los pipelines) y que ofrece buenos resultados.

Os animo a probarlo.

datacy – data driven decisions

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *