En la primera parte de nuestra serie sobre expss, sentamos las bases. Aprendiste a crear tablas de frecuencias y tablas cruzadas de forma limpia y eficiente, replicando la salida básica de SPSS. Ya dominas la lógica secuencial de tab_cells(), tab_cols() y tab_pivot().
Ahora, es el momento de desatar el verdadero poder de expss. Un informe de investigación de mercados raramente se compone de tablas simples con un solo porcentaje. Necesitamos tablas más ricas, que muestren múltiples estadísticos, que incorporen variables numéricas y que, sobre todo, nos permitan comparar muchos grupos demográficos a la vez en una única vista.
En este post, nos sumergiremos en tres técnicas avanzadas que te permitirán construir tablas de calidad profesional:
Añadir múltiples estadísticos a cada celda (recuentos, porcentajes fila, etc.).
Incorporar variables continuas para analizar medias y desviaciones estándar.
Construir “banners” complejos con múltiples variables en las columnas.
Preparación: Ampliando nuestro dataset
Para los ejemplos de hoy, necesitaremos una variable continua. Vamos a añadir el Gasto_Mensual a nuestro dataset de la encuesta de Telco S.A. Y recuerda, siempre cargamos dplyr antes que expss.
Code
# Cargar las librerías en el orden recomendadolibrary(dplyr)library(expss)# Crear un conjunto de datos simulado (ahora con Gasto_Mensual)set.seed(42)datos_encuesta <-tibble(ID_Cliente =1:500,Genero =sample(c("Hombre", "Mujer"), 500, replace =TRUE, prob =c(0.48, 0.52)),Plan_Contratado =sample(c("Básico", "Premium", "Familia"), 500, replace =TRUE, prob =c(0.5, 0.3, 0.2)),Satisfaccion =sample(c("Muy insatisfecho", "Insatisfecho", "Neutral", "Satisfecho", "Muy satisfecho"), 500, replace =TRUE),Gasto_Mensual =rnorm(500, mean =45, sd =15)) %>%apply_labels(Genero ="Género del cliente",Plan_Contratado ="Plan de servicio contratado",Satisfaccion ="Satisfacción General con el Servicio",Gasto_Mensual ="Gasto Mensual Medio (€)" )
1. Múltiples estadísticos por celda: Una visión completa
En el post anterior, mostramos el porcentaje columna (% Columna). Pero a veces queremos una visión más completa. Por ejemplo, ¿qué porcentaje de los “Muy satisfechos” tienen un plan Familiar? Para eso, necesitamos el porcentaje fila (% Fila).
expss nos permite apilar tantos estadísticos como queramos.
Pregunta: ¿Cómo se distribuye la satisfacción por plan, mostrando recuentos, % columna y % fila?
tab_stat_cases(): para el recuento (N).
tab_stat_cpct(): para el porcentaje columna.
tab_stat_rpct(): para el porcentaje fila. rpct significa “row percent”.
¡Fantástico! Ahora la tabla es mucho más rica. Podemos leerla de dos maneras: * Verticalmente (% Columna): “El 29.8% de los clientes del plan Familia están ‘Muy satisfechos’”. * Horizontalmente (% Fila): “De todos los clientes ‘Muy satisfechos’, el 22.8% tienen el plan Familia”.
Esta doble perspectiva es extremadamente útil para el análisis.
2. Incorporando variables continuas: Análisis de medias
Las tablas no son solo para variables categóricas. Una de las tareas más comunes es calcular la media de una variable continua (como el gasto, la edad o una valoración en escala) para diferentes grupos.
Pregunta: ¿Cuál es el Gasto_Mensual medio para cada Plan_Contratado?
Aquí la lógica cambia ligeramente. La variable continua va en tab_cells(), y la variable de agrupación va en tab_cols(). Luego, usamos un estadístico de resumen como tab_stat_mean_sd_n().
Code
datos_encuesta %>%tab_cells(Gasto_Mensual) %>%# La variable continua en las celdastab_cols(total(), Plan_Contratado) %>%# La variable de agrupación en las columnastab_stat_mean_sd_n(labels =c("Media", "D.E.", "Base (N)")) %>%# Múltiples estadísticostab_pivot()
Warning in as.data.frame.numeric(x[[i]], optional = TRUE, nm = "x[[i]]", :
Direct call of 'as.data.frame.numeric()' is deprecated. Use
'as.data.frame.vector()' or 'as.data.frame()' instead
#Total
Plan de servicio contratado
Básico
Familia
Premium
Gasto Mensual Medio (€)
Media
46.3
47.6
43.0
45.9
D.E.
15.3
15.0
14.6
16.0
Base (N)
500.0
262.0
95.0
143.0
Esta tabla nos muestra de forma clara que la mínima diferencia en el gasto medio con la categoría del plan. Mostrar la Desviación Estándar (D.E.) y la Base (N) es una buena práctica que da robustez al análisis.
expss tiene muchos otros estadísticos de resumen que puedes usar, como tab_stat_median(), tab_stat_min(), tab_stat_max(), etc.
3. La habilidad estrella: Creación de “banners” complejos
Esta es, posiblemente, la funcionalidad más potente de expss para un investigador de mercados. Un “banner” es un conjunto de columnas que combina múltiples variables demográficas o de segmentación. Te permite ver todos tus cruces clave en una sola tabla, en lugar de generar docenas de ellas por separado.
Pregunta: ¿Cómo se distribuye la Satisfaccion a través de todos nuestros grupos clave: Genero y Plan_Contratado?
La sintaxis es sorprendentemente simple. ¡Simplemente listas todas las variables que quieres en las columnas dentro de tab_cols()!
Tabla de satisfacción con un banner complejo que combina Género y Plan Contratado.
Con una sola línea de código, hemos creado una tabla ancha y completa, lista para un informe. Ahora puedes comparar la satisfacción de los Hombres vs. las Mujeres, y al mismo tiempo compararla con la de los clientes del plan Básico vs. Premium, todo en la misma vista.
Esta capacidad para crear banners complejos es lo que hace que expss sea una herramienta tan productiva, ahorrando horas de trabajo y permitiendo un análisis mucho más fluido e integrado.
Conclusión y próximos pasos
Hoy has dado un salto cualitativo en tu dominio de expss. Ya no estás limitado a tablas simples. Has aprendido a:
Enriquecer tus celdas con múltiples estadísticos (N, % col, % fila).
Analizar variables continuas calculando medias y otros estadísticos de resumen por grupos.
Construir “banners” complejos, la piedra angular de los informes de investigación de mercados.
Ahora tienes las herramientas para construir casi cualquier tabla descriptiva que puedas necesitar. Pero nos falta un ingrediente crucial: la inferencia. ¿Son las diferencias que vemos en nuestras tablas estadísticamente significativas?
En nuestro próximo y último post de la serie, cerraremos el círculo aprendiendo a añadir pruebas de significación (pruebas Z y T) directamente en nuestras tablas, completando así tu transición a un analista de datos de encuestas profesional en R.
Referencias
Demin, G. (2024). expss: Tables with Labels, Weights, Multiple Response and Significance Testing. R package version 0.11.6. https://CRAN.R-project.org/package=expss
Wickham, H., et al. (2019). Welcome to the tidyverse. Journal of Open Source Software, 4(43), 1686. https://doi.org/10.21105/joss.01686
Este post es parte de la serie “Tablas Profesionales en R: La Guía Definitiva del Paquete expss para Investigadores de Mercado”.