En cualquier trabajo de investigación que involucre una muestra o conjunto de datos es importante mostrar un cuadro resumen que contenga estadísticas descriptivas del conjunto, de esta manera se puede comunicar de forma clara la dimensión de los datos del estudio.
Con solo dos herramientas la construcción de tablas resúmnes resulta muy facil y sencilla. Las funciones de dplyr permiten calcular diferentes estadísticas según grupos. Una vez terminada la tabla el paquete kableExtra transforma facimente la información de la tabla a formato HTML o Latex (para visualizar en PDF).
Los datos a usar
Para este ejemplo utilizo los datos vuelos que están dentro del paquete datos. vuelos es la traducción al español del conjunto nycflights13::flights. Este conjunto contiene los datos de los vuelos que despegaron de Nueva York durante el 2013.
Los datos vienen en formato tibble. De manera de ejemplo y poder probar las agrupaciones de columnas y filas al momento de mostrar la tabla voy a filtrar el conjunto de datos en un rango de tres meses (septiembre a noviembre) y trabajar con los datos de las 3 aerolíneas con más vuelos.
Preparando los datos
mayores_aerolineas guarda las 3 aerolineas con mas vuelos:
# A tibble: 3 × 2
aerolinea nombre
<chr> <chr>
1 B6 JetBlue Airways
2 EV ExpressJet Airlines Inc.
3 UA United Air Lines Inc.
En datos guarda los datos a utilizar para este ejemplo.
datos <- vuelos %>%select(mes, aerolinea, atraso_llegada, atraso_salida) %>%filter(atraso_salida >0 , atraso_llegada >0) %>%filter(mes >=9, mes <=11) %>%filter(aerolinea %in% mayores_aerolineas$aerolinea) %>%arrange(mes)datos
# A tibble: 8,688 × 4
mes aerolinea atraso_llegada atraso_salida
<int> <chr> <dbl> <dbl>
1 9 B6 3 10
2 9 B6 139 152
3 9 EV 8 11
4 9 B6 9 2
5 9 B6 13 18
6 9 B6 46 57
7 9 EV 61 80
8 9 EV 4 25
9 9 UA 16 50
10 9 EV 30 38
# ℹ 8,678 more rows
De manera de hacer un ejemplo práctico, generalmente en los papers que ajustan modelos de predicción suele mostrarse el conjunto de datos separados en “ajuste” y “prueba”. Para esto, el conjunto datos se dividió aleatoriamente en proporción 80:20. Luego para cada conjunto se calcularon algunas estadísticas en base a la variable atraso_llegada.
Luego en resumen se guardó la información a mostrar en la tabla.
resumen <-left_join(datos_train,datos_test) %>%mutate(mes =case_when( mes ==9~"Septiembre", mes ==10~"Octubre", mes ==11~"Noviembre")) %>%left_join(aerolineas) %>%select(mes, nombre, everything(), - (aerolinea))
Para mostrar la tabla en formato se utilizó la función kable() del paquete kableExtra. Por defecto el tipo de formato está en HTML. En los nombres de columnas se agregó <br> (salto de línea en HTML). Para agrupar filas se podría usar collapse_rows() según la variable mes.
Para formato Latex se debe especificar en el argumento formato = "latex". Algunos argumentos son difentes, como en el caso de los saltos en líneas en los nombres: