Introducción

El presente informe muestra los resultados obtenidos a partir de una encuesta aplicada a los clientes que ingresan al centro comercial San Luis, con el objetivo de evaluar la calidad del servicio en Supercines.


Exploración de los datos

# Ver estructura
str(datos)
## tibble [390 × 30] (S3: tbl_df/tbl/data.frame)
##  $ Marcatemporal                                                  : Date[1:390], format: "2026-01-04" "2026-01-04" ...
##  $ TANGIBILIDAD¿LasinstalacionesdeSupercinesseencuentranlimpiasybi: num [1:390] 3 5 4 3 3 5 5 5 2 4 ...
##   ..- attr(*, "label")= chr "TANGIBILIDAD [¿Las instalaciones de Supercines se encuentran limpias y bien mantenidas? (libre de basura, polvos)]"
##   ..- attr(*, "format.spss")= chr "F1.0"
##   ..- attr(*, "display_width")= int 12
##  $ TANGIBILIDAD¿Laseñaléticadentroyfueradelcineesclarayfácildec   : num [1:390] 4 5 5 4 5 5 5 5 4 4 ...
##   ..- attr(*, "label")= chr "TANGIBILIDAD [¿La señalética dentro y fuera del cine es clara y fácil de comprender?]"
##   ..- attr(*, "format.spss")= chr "F1.0"
##   ..- attr(*, "display_width")= int 12
##  $ TANGIBILIDAD¿Lailuminaciónentodaslasáreasesadecuadailuminaci   : num [1:390] 4 5 5 5 5 5 5 5 4 5 ...
##   ..- attr(*, "label")= chr "TANGIBILIDAD [¿La iluminación en todas las áreas es adecuada? (iluminación completa sin luces parpadeantes)]"
##   ..- attr(*, "format.spss")= chr "F1.0"
##   ..- attr(*, "display_width")= int 12
##  $ TANGIBILIDAD¿Elmobiliariolassalasylosservicioshigiénicosestán  : num [1:390] 3 5 3 3 4 4 2 3 3 4 ...
##   ..- attr(*, "label")= chr "TANGIBILIDAD [¿El mobiliario, las salas y los servicios higiénicos están en buen estado? (ausencia de basura, s"| __truncated__
##   ..- attr(*, "format.spss")= chr "F1.0"
##   ..- attr(*, "display_width")= int 12
##  $ TANGIBILIDAD¿Elpersonalluceuniformelimpioypresentablesinmanchas: num [1:390] 4 5 5 4 4 4 4 5 4 5 ...
##   ..- attr(*, "label")= chr "TANGIBILIDAD [¿El personal luce uniforme limpio y presentable? (sin manchas, arrugas o desgaste)]"
##   ..- attr(*, "format.spss")= chr "F1.0"
##   ..- attr(*, "display_width")= int 12
##  $ EMPATÍA¿Elpersonallosaludadeformacordialaliniciarlaatenciónbu  : num [1:390] 4 3 4 5 4 5 4 5 4 5 ...
##   ..- attr(*, "label")= chr "EMPATÍA [¿El personal lo saluda de forma cordial al iniciar la atención? (buenos días, tardes, noches)]"
##   ..- attr(*, "format.spss")= chr "F1.0"
##   ..- attr(*, "display_width")= int 12
##  $ EMPATÍA¿Elpersonalmuestraamabilidadydisposiciónparaayudarmant  : num [1:390] 4 3 5 5 4 5 2 5 4 5 ...
##   ..- attr(*, "label")= chr "EMPATÍA [¿El personal muestra amabilidad y disposición para ayudar? (mantiene contacto visual, sonríe, tono de voz suave)]"
##   ..- attr(*, "format.spss")= chr "F1.0"
##   ..- attr(*, "display_width")= int 12
##  $ EMPATÍA¿Elpersonalsecomunicaconclaridadyrespetosaludamencionai : num [1:390] 4 3 4 5 4 5 2 5 4 5 ...
##   ..- attr(*, "label")= chr "EMPATÍA [¿El personal se comunica con claridad y respeto? (saluda, menciona indicaciones sin tartamudear)]"
##   ..- attr(*, "format.spss")= chr "F1.0"
##   ..- attr(*, "display_width")= int 12
##  $ EMPATÍA¿Laatenciónrecibidasesientepersonalizada                : num [1:390] 3 3 3 3 4 5 2 4 2 4 ...
##   ..- attr(*, "label")= chr "EMPATÍA [¿La atención recibida se siente personalizada?]"
##   ..- attr(*, "format.spss")= chr "F1.0"
##   ..- attr(*, "display_width")= int 12
##  $ EMPATÍA¿Elpersonallehacesentirconfianzaybuentratosonríemantie  : num [1:390] 3 3 5 4 4 4 3 4 4 4 ...
##   ..- attr(*, "label")= chr "EMPATÍA [¿El personal le hace sentir confianza y buen trato? (sonríe, mantiene contacto visual)]"
##   ..- attr(*, "format.spss")= chr "F1.0"
##   ..- attr(*, "display_width")= int 12
##  $ CAPACIDADDERESPUESTA¿Elpersonalloatiendedemanerarápidaalllegar : num [1:390] 4 3 5 5 2 5 3 4 2 4 ...
##   ..- attr(*, "label")= chr "CAPACIDAD DE RESPUESTA [¿El personal lo atiende de manera rápida al llegar? (1 min)]"
##   ..- attr(*, "format.spss")= chr "F1.0"
##   ..- attr(*, "display_width")= int 12
##  $ CAPACIDADDERESPUESTA¿Lavalidacióndelboletoeságil               : num [1:390] 5 4 5 5 4 5 4 5 4 5 ...
##   ..- attr(*, "label")= chr "CAPACIDAD DE RESPUESTA [¿La validación del boleto es ágil?]"
##   ..- attr(*, "format.spss")= chr "F1.0"
##   ..- attr(*, "display_width")= int 12
##  $ CAPACIDADDERESPUESTA¿Eltiempodeatenciónentaquillaysnacksesadec : num [1:390] 3 5 5 4 4 4 2 2 2 3 ...
##   ..- attr(*, "label")= chr "CAPACIDAD DE RESPUESTA [¿El tiempo de atención en taquilla y snacks es adecuado? (filas cortas, sin tiempos de "| __truncated__
##   ..- attr(*, "format.spss")= chr "F1.0"
##   ..- attr(*, "display_width")= int 12
##  $ CAPACIDADDERESPUESTA¿Elpersonalrespondeoportunamenteanteproblem: num [1:390] 3 4 4 5 5 2 2 4 3 3 ...
##   ..- attr(*, "label")= chr "CAPACIDAD DE RESPUESTA [¿El personal responde oportunamente ante problemas o reclamos?]"
##   ..- attr(*, "format.spss")= chr "F1.0"
##   ..- attr(*, "display_width")= int 12
##  $ CAPACIDADDERESPUESTA¿Elpersonalestádisponiblecuandonecesitaasi : num [1:390] 4 5 5 5 5 3 3 4 3 5 ...
##   ..- attr(*, "label")= chr "CAPACIDAD DE RESPUESTA [¿El personal está disponible cuando necesita asistencia?]"
##   ..- attr(*, "format.spss")= chr "F1.0"
##   ..- attr(*, "display_width")= int 12
##  $ SEGURIDAD¿SesientesegurodentrodeSupercinesdurantesuvisita      : num [1:390] 5 3 5 5 5 5 4 5 5 5 ...
##   ..- attr(*, "label")= chr "SEGURIDAD [¿Se siente seguro dentro de Supercines durante su visita?]"
##   ..- attr(*, "format.spss")= chr "F1.0"
##   ..- attr(*, "display_width")= int 12
##  $ SEGURIDAD¿Lapresenciadeguardiasycámarasdevigilanciatransmiteco : num [1:390] 3 5 4 4 5 4 3 4 5 5 ...
##   ..- attr(*, "label")= chr "SEGURIDAD [¿La presencia de guardias y cámaras de vigilancia transmite confianza?]"
##   ..- attr(*, "format.spss")= chr "F1.0"
##   ..- attr(*, "display_width")= int 12
##  $ SEGURIDAD¿Lassalidasdeemergenciaestánseñalizadasyaccesibles    : num [1:390] 5 4 5 5 4 5 4 4 5 5 ...
##   ..- attr(*, "label")= chr "SEGURIDAD [¿Las salidas de emergencia están señalizadas y accesibles?]"
##   ..- attr(*, "format.spss")= chr "F1.0"
##   ..- attr(*, "display_width")= int 12
##  $ SEGURIDAD¿Lospasillosestánlibresdeobstáculosypermitencircular  : num [1:390] 5 4 5 5 5 5 5 4 4 4 ...
##   ..- attr(*, "label")= chr "SEGURIDAD [¿Los pasillos están libres de obstáculos y permiten circular con seguridad?]"
##   ..- attr(*, "format.spss")= chr "F1.0"
##   ..- attr(*, "display_width")= int 12
##  $ SEGURIDAD¿Losequiposymedidasdeseguridadsonvisiblesyadecuadosext: num [1:390] 5 5 5 5 5 5 5 4 5 4 ...
##   ..- attr(*, "label")= chr "SEGURIDAD [¿Los equipos y medidas de seguridad son visibles y adecuados? (extintores, detectores, alarmas)]"
##   ..- attr(*, "format.spss")= chr "F1.0"
##   ..- attr(*, "display_width")= int 12
##  $ FIABILIDAD¿Elpersonaldemuestraconocerloshorariospromocionesypro: num [1:390] 5 3 4 5 4 5 4 4 5 5 ...
##   ..- attr(*, "label")= chr "FIABILIDAD [¿El personal demuestra conocer los horarios, promociones y procesos del servicio?]"
##   ..- attr(*, "format.spss")= chr "F1.0"
##   ..- attr(*, "display_width")= int 12
##  $ FIABILIDAD¿Losboletossonvalidadoscorrectamentesalafechaasiento : num [1:390] 5 4 2 3 2 4 5 3 5 5 ...
##   ..- attr(*, "label")= chr "FIABILIDAD [¿Los boletos son validados correctamente (sala, fecha, asiento)?]"
##   ..- attr(*, "format.spss")= chr "F1.0"
##   ..- attr(*, "display_width")= int 12
##  $ FIABILIDAD¿Losvendedoresdesnacksconocenconclaridadlosproductosy: num [1:390] 5 5 5 5 4 4 4 3 4 5 ...
##   ..- attr(*, "label")= chr "FIABILIDAD [¿Los vendedores de snacks conocen con claridad los productos y combos disponibles?]"
##   ..- attr(*, "format.spss")= chr "F1.0"
##   ..- attr(*, "display_width")= int 12
##  $ FIABILIDAD¿Elpersonaldesalaconocelosprotocolosdeseguridadyevacu: num [1:390] 5 5 4 4 5 2 5 4 4 3 ...
##   ..- attr(*, "label")= chr "FIABILIDAD [¿El personal de sala conoce los protocolos de seguridad y evacuación?]"
##   ..- attr(*, "format.spss")= chr "F1.0"
##   ..- attr(*, "display_width")= int 12
##  $ FIABILIDAD¿Elpersonaldemuestraconoceradecuadamentelosprocedimie: num [1:390] 5 5 3 5 4 4 4 4 4 5 ...
##   ..- attr(*, "label")= chr "FIABILIDAD [¿El personal demuestra conocer adecuadamente los procedimientos y servicios que ofrece Supercines? "| __truncated__
##   ..- attr(*, "format.spss")= chr "F1.0"
##   ..- attr(*, "display_width")= int 12
##  $ ¿Eltiempodeesperaenlafilafueadecuadoparaelserviciorecibido     : num [1:390] 4 5 4 4 4 4 5 4 3 5 ...
##   ..- attr(*, "label")= chr " [¿El tiempo de espera en la fila fue adecuado para el servicio recibido?]"
##   ..- attr(*, "format.spss")= chr "F1.0"
##   ..- attr(*, "display_width")= int 12
##  $ limpieza                                                       : Factor w/ 5 levels "1","2","3","4",..: 3 5 4 3 3 5 5 5 2 4 ...
##  $ senaletica                                                     : Factor w/ 5 levels "1","2","3","4",..: 4 5 5 4 5 5 5 5 4 4 ...
##  $ iluminacion                                                    : Factor w/ 5 levels "1","2","3","4",..: 4 5 5 5 5 5 5 5 4 5 ...
# Ver nombres reales de columnas
colnames(datos)
##  [1] "Marcatemporal"                                                  
##  [2] "TANGIBILIDAD¿LasinstalacionesdeSupercinesseencuentranlimpiasybi"
##  [3] "TANGIBILIDAD¿Laseñaléticadentroyfueradelcineesclarayfácildec"   
##  [4] "TANGIBILIDAD¿Lailuminaciónentodaslasáreasesadecuadailuminaci"   
##  [5] "TANGIBILIDAD¿Elmobiliariolassalasylosservicioshigiénicosestán"  
##  [6] "TANGIBILIDAD¿Elpersonalluceuniformelimpioypresentablesinmanchas"
##  [7] "EMPATÍA¿Elpersonallosaludadeformacordialaliniciarlaatenciónbu"  
##  [8] "EMPATÍA¿Elpersonalmuestraamabilidadydisposiciónparaayudarmant"  
##  [9] "EMPATÍA¿Elpersonalsecomunicaconclaridadyrespetosaludamencionai" 
## [10] "EMPATÍA¿Laatenciónrecibidasesientepersonalizada"                
## [11] "EMPATÍA¿Elpersonallehacesentirconfianzaybuentratosonríemantie"  
## [12] "CAPACIDADDERESPUESTA¿Elpersonalloatiendedemanerarápidaalllegar" 
## [13] "CAPACIDADDERESPUESTA¿Lavalidacióndelboletoeságil"               
## [14] "CAPACIDADDERESPUESTA¿Eltiempodeatenciónentaquillaysnacksesadec" 
## [15] "CAPACIDADDERESPUESTA¿Elpersonalrespondeoportunamenteanteproblem"
## [16] "CAPACIDADDERESPUESTA¿Elpersonalestádisponiblecuandonecesitaasi" 
## [17] "SEGURIDAD¿SesientesegurodentrodeSupercinesdurantesuvisita"      
## [18] "SEGURIDAD¿Lapresenciadeguardiasycámarasdevigilanciatransmiteco" 
## [19] "SEGURIDAD¿Lassalidasdeemergenciaestánseñalizadasyaccesibles"    
## [20] "SEGURIDAD¿Lospasillosestánlibresdeobstáculosypermitencircular"  
## [21] "SEGURIDAD¿Losequiposymedidasdeseguridadsonvisiblesyadecuadosext"
## [22] "FIABILIDAD¿Elpersonaldemuestraconocerloshorariospromocionesypro"
## [23] "FIABILIDAD¿Losboletossonvalidadoscorrectamentesalafechaasiento" 
## [24] "FIABILIDAD¿Losvendedoresdesnacksconocenconclaridadlosproductosy"
## [25] "FIABILIDAD¿Elpersonaldesalaconocelosprotocolosdeseguridadyevacu"
## [26] "FIABILIDAD¿Elpersonaldemuestraconoceradecuadamentelosprocedimie"
## [27] "¿Eltiempodeesperaenlafilafueadecuadoparaelserviciorecibido"     
## [28] "limpieza"                                                       
## [29] "senaletica"                                                     
## [30] "iluminacion"

Preparación de variables (SIN ERRORES)

# Identificar columnas por palabras clave
col_limpieza   <- grep("limpi", colnames(datos), ignore.case = TRUE, value = TRUE)
col_senaletica <- grep("señal|senal", colnames(datos), ignore.case = TRUE, value = TRUE)
col_iluminacion<- grep("ilumin", colnames(datos), ignore.case = TRUE, value = TRUE)

# Crear variables cortas y seguras
datos <- datos %>%
  mutate(
    limpieza   = .data[[col_limpieza[1]]],
    senaletica = .data[[col_senaletica[1]]],
    iluminacion= .data[[col_iluminacion[1]]]
  )

# Convertir a factor (escala Likert)
datos <- datos %>%
  mutate(
    limpieza   = factor(limpieza, levels = 1:5),
    senaletica = factor(senaletica, levels = 1:5),
    iluminacion= factor(iluminacion, levels = 1:5)
  )

Resultados gráficos

Limpieza de las instalaciones

ggplot(datos, aes(x = limpieza)) +
  geom_bar(fill = "#2C7FB8") +
  labs(
    title = "Limpieza de las instalaciones",
    x = "Nivel de satisfacción",
    y = "Frecuencia"
  ) +
  theme_minimal()


Claridad de la señalética

ggplot(datos, aes(x = senaletica)) +
  geom_bar(fill = "#41B6C4") +
  labs(
    title = "Claridad de la señalética",
    x = "Nivel de satisfacción",
    y = "Frecuencia"
  ) +
  theme_minimal()


📊 Iluminación de las áreas

ggplot(datos, aes(x = iluminacion)) +
  geom_bar(fill = "#7FCDBB") +
  labs(
    title = "Iluminación de las áreas",
    x = "Nivel de satisfacción",
    y = "Frecuencia"
  ) +
  theme_minimal()

Limpieza de las instalaciones (Porcentaje)

datos %>%
  count(limpieza) %>%
  mutate(porcentaje = n / sum(n) * 100) %>%
  ggplot(aes(x = limpieza, y = porcentaje)) +
  geom_col() +
  labs(
    title = "Porcentaje de satisfacción – Limpieza",
    x = "Nivel de satisfacción",
    y = "Porcentaje (%)"
  ) +
  theme_minimal()

### Claridad de la señalética (Porcentaje)

datos %>%
  count(senaletica) %>%
  mutate(porcentaje = n / sum(n) * 100) %>%
  ggplot(aes(x = senaletica, y = porcentaje)) +
  geom_col() +
  labs(
    title = "Porcentaje de satisfacción – Señalética",
    x = "Nivel de satisfacción",
    y = "Porcentaje (%)"
  ) +
  theme_minimal()

### Promedio de satisfacción por aspecto

promedios <- datos %>%
  summarise(
    Limpieza = mean(as.numeric(as.character(limpieza)), na.rm = TRUE),
    Señalética = mean(as.numeric(as.character(senaletica)), na.rm = TRUE),
    Iluminación = mean(as.numeric(as.character(iluminacion)), na.rm = TRUE)
  ) %>%
  pivot_longer(everything(), names_to = "Aspecto", values_to = "Promedio")

ggplot(promedios, aes(x = Aspecto, y = Promedio)) +
  geom_col() +
  labs(
    title = "Promedio de satisfacción por aspecto evaluado",
    x = "Aspecto",
    y = "Promedio"
  ) +
  theme_minimal()


Guardar datos procesados

save(datos, file = "datos_listos.RData")