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

tabla_frecuencia

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.
  

tabla_cruda

Adrián Muñoz García
Adrián Muñoz García
Data Scientist and Statistics Professor

My research interests are Behavioral Economics, Cognition and Methods