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.