Anidar y desanidar datos con ‘nest’ y ‘unnest’

Alin Castillo ()

Descripción

El anidamiento es implícitamente una operación de resumen: obtiene una fila para cada grupo definido por las columnas no anidadas. Esto es útil junto con otros resúmenes que funcionan con conjuntos de datos completos, sobre todo modelos.

Información Adicional

Instalación del paquete

install.packages("dplyr")
install.packages("tidyr")

Carga de los paquetes

library(dplyr) # for %>% , group_by()
library(tidyr) # for nest()

Creación del marco de datos

df <- 
  data.frame(
    individuo = c("i1", "i1", "i2", "i2"),
    gen_a = c(1, 2, 2, 2),
    gen_b = c(3, 3, 1, 3),
    gen_c = c(4, 4, 1, 2))

Agrupamiento por “individuo”

df <- 
  df %>% 
  group_by(individuo) %>% 
  nest()

df$data
## [[1]]
## # A tibble: 2 × 3
##   gen_a gen_b gen_c
##   <dbl> <dbl> <dbl>
## 1     1     3     4
## 2     2     3     4
## 
## [[2]]
## # A tibble: 2 × 3
##   gen_a gen_b gen_c
##   <dbl> <dbl> <dbl>
## 1     2     1     1
## 2     2     3     2

Desagrupamiento de los datos

df <- 
  df %>% 
  unnest(cols = c(data))

df
## # A tibble: 4 × 4
## # Groups:   individuo [2]
##   individuo gen_a gen_b gen_c
##   <chr>     <dbl> <dbl> <dbl>
## 1 i1            1     3     4
## 2 i1            2     3     4
## 3 i2            2     1     1
## 4 i2            2     3     2