Entrada para recordar cómo transponer data frames con R: cómo pasar de $n$ filas a $n$ columnas manteniendo campos identificativos y cómo pasar de columnas a filas y crear un campo identificativo. Siento que últimamente, más que un blog, tengo un cuaderno de apuntes, pero si estos apuntes pueden ayudar a alguien, mejor. En realidad, la entrada es un ejemplo ilustrativo de las funciones de tidyr pivot_wider y pivot_longer.
Pasar de filas a columnas
# install.packages("palmerpenguins")
library(palmerpenguins)
library(tidyr)
library(dplyr)
agregado_especies <- penguins %>%
group_by(species, year) %>%
summarise(bill_depth_mm = mean(bill_depth_mm, na.rm = TRUE)) %>%
pivot_wider(names_from = year, values_from = bill_depth_mm, names_prefix = "ANIO_")
Teníamos un campo por filas que contenía el año; hemos transpuesto por ese campo año y creado tantas variables (names_from) como años tengo para las variables numéricas deseadas (values_from); además, hemos creado esas variables con el prefijo ANIO_.
Pasar de columnas a filas
agregado_especies2 <- agregado_especies %>%
pivot_longer(
cols = starts_with("ANIO_"),
names_to = "ANIO",
values_to = "bill_depth_mm"
)
Deshacemos la transposición de filas a columnas anterior; ahora pasamos de columnas a filas el valor (values_to) y creamos un campo identificativo (names_to), y lo hacemos para todas aquellas variables que empiezan por el prefijo “ANIO_” (starts_with).
Si se me vuelve a olvidar por enésima vez, por lo menos sé dónde buscar. Saludos.