Anidación en R
Una columna de listas con data frames, uno por grupo — el modo tidy de modelar por grupo.
library(tidyr)
library(dplyr)
library(purrr)
runs <- tibble(
lang = c("r", "r", "r", "python", "python", "python"),
day = c(1, 2, 3, 1, 2, 3),
tpm = c(88, 92, 96, 99, 104, 101)
)
nested <- nest(runs, data = c(day, tpm))
print(nested)
fitted <- mutate(nested,
rows = map_int(data, nrow),
slope = map_dbl(data, ~ coef(lm(tpm ~ day, data = .x))[[2]]))
print(select(fitted, lang, rows, slope))
print(unnest(nested, data) |> nrow())
Cómo funciona
nest(.by = )pone las filas de cada grupo en una columnadata.mapsobre esa columna ajusta o resume por grupo.unnestla vuelve a aplanar.
El intento, en números
- Líneas
- 18
- Caracteres a escribir
- 430
- Tokens
- 158
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 90 segundos.
Paso 1 de 3 en Anidado y huecos; paso 6 de 12 en Remodelar y leer.