Generar observaciones desde tabla de frecuencias
Creando escenarios para ejercicos de estadística muchas veces es útil crear una base datos cruda, con todas las observaciones, desde una tabla de frecuencias. Os comparto un modo bueno, bonito y barato para generar un data frame con todas las observaciones desde una tabla de frecuencias o conteos.
Crear la propia tabla/df de frecuencias
La mayoría de las veces la he importado desde excel, pero si queremos forzar o inventar desde cero un escenario, es bastante rápido generar un df con R.
# require (tidyverse)
t1 <- data.frame(
"Casa" = c("Tyrell","Lannister","Targaryen","Stark"),
"Vivos" = c(7,23,4,10)
) %>% # Paso realmente innecesario. Convierto la variable nominal a factor.
mutate(
Casa = as.factor(Casa)
)
t1
Generar las observaciones desde la frecuencias
Y como las recetas express de Arguiñano podemos generar un data frame con todas las observaciones crudas con una sintaxis muy reducida. Para el proceso me sirvo de purrr::map2(). El paquete está incluído en el universo de Tidyverse.
t1 %>%
# convertir a df si está en otro formato
# as.data.frame(.) %>%
mutate ( Freq = map2(1,Vivos, `:`)) %>% # Genero una lista con x elementos, donde x es la frecuencia absoluta de cada grupo.
unnest (Freq) %>% # Genero una fila por cada elemento de la lista en función de la variable Freq
select (- Vivos) # Me olvido de la antigua variable con la frecuencia absoluta de cada grupo.