library(cli);library(googlesheets4)
# Autenticación interactiva
gs4_auth()
## ! Using an auto-discovered, cached token.
## To suppress this message, modify your code or options to clearly consent to
## the use of a cached token.
## See gargle's "Non-interactive auth" vignette for more details:
## <https://gargle.r-lib.org/articles/non-interactive-auth.html>
## ℹ The googlesheets4 package is using a cached token for
## 'dominguez.laura@correounivalle.edu.co'.
# Leer datos
datos <- read_sheet("https://docs.google.com/spreadsheets/d/1Wv6sqZST0bVW9eHV3QvSXEa4vavdVxmx5KsriXeSAz4/edit?resourcekey=&gid=1156369379#gid=1156369379")
## ✔ Reading from
## "Percepción de Seguridad de Consumidores en establecimientos gastronómicos (respuestas)".
## ✔ Range 'Respuestas de formulario 1'.
## New names:
## • `Departamento/ciudad de Residencia` -> `Departamento/ciudad de
## Residencia...8`
## • `Departamento/ciudad de Residencia` -> `Departamento/ciudad de
## Residencia...11`
#SOCIODEMOGRÁFICAS-------------------------------------------------------------------
#fecha<-datos[,1]
#sociodemograficas<-datos[,c(2:22)]
#Condición de salud del cliente
#PP_Salud<-datos[,c(23:27)]
#Percepción Previa de Seguridad PAG 19------
#a. Reputación de la zona y del establecimiento
#PP_Zona<-datos[,c(28:34)]
#b. Antecedentes de ataques cibernéticos y actos delictivos
#PP_Ciberneticos<-datos[,c(35:39)]
Percepción in- situ de
seguridad ante actos delictivos
#Seguridad de la zona (Externa)
#P1_Externa<-datos[,c(40:50)] #51,52
#P1_Externa_general<-datos[,63]
datos$P1_Externa_suma<- apply(datos[,c(40:50)], 1, function(x) sum(x, na.rm = TRUE))
datos$P1_Externa<-round(((datos$P1_Externa_suma-ncol(datos[,c(40:50)]))/(ncol(datos[,c(40:50)])*7-ncol(datos[,c(40:50)])))*100,2)
#Seguridad Dentro del establecimiento (Interna)
#P1_Interna<-datos[,c(54:59)] #60,61
#P1_Interna_general<-datos[,62]
datos$P1_Interna_suma<- apply(datos[,c(54:59)], 1, function(x) sum(x, na.rm = TRUE))
datos$P1_Interna<-round(((datos$P1_Interna_suma-ncol(datos[,c(54:59)]))/(ncol(datos[,c(54:59)])*7-ncol(datos[,c(54:59)])))*100,2)
#Ciberseguridad
#P1_Ciberseguridad<-datos[,c(63:66)] #67,68
#P1_Ciberseguridad_general<-datos[,69]
datos$P1_Ciberseguridad_suma<- apply(datos[,c(63:66)], 1, function(x) sum(x, na.rm = TRUE))
datos$P1_Ciberseguridad<-round(((datos$P1_Ciberseguridad_suma-ncol(datos[,c(63:66)]))/(ncol(datos[,c(63:66)])*7-ncol(datos[,c(63:66)])))*100,2)
Percepción in-situ de
seguridad física/prevención de accidentes en elestablecimiento.
#Infraestructura física
#P2_Infraestructura<-datos[,c(70:84)] #85,86
#P2_Infraestructura_general<-datos[,87]
datos$P2_Infraestructura_suma<- apply(datos[,c(70:84)], 1, function(x) sum(x, na.rm = TRUE))
datos$P2_Infraestructura<-round(((datos$P2_Infraestructura_suma-ncol(datos[,c(70:84)]))/(ncol(datos[,c(70:84)])*7-ncol(datos[,c(63:66)])))*100,2)
Percepción in-situ de
las condiciones de bioseguridad e higiene en el establecimiento
#Higiene y Limpieza
#P3_Higiene<-datos[,c(88:98)] #99,100
#P3_Higiene_general<-datos[,101]
datos$P3_Higiene_suma<- apply(datos[,c(88:98)], 1, function(x) sum(x, na.rm = TRUE))
datos$P3_Higiene<-round(((datos$P3_Higiene_suma-ncol(datos[,c(88:98)]))/(ncol(datos[,c(88:98)])*7-ncol(datos[,c(88:98)])))*100,2)
#Inocuidad de alimentos
#P3_Inocuidad<-datos[,c(102:106)] #107,108
#P3_Inocuidad_general<-datos[,109]
datos$P3_Inocuidad_suma<- apply(datos[,c(102:106)], 1, function(x) sum(x, na.rm = TRUE))
datos$P3_Inocuidad<-round(((datos$P3_Inocuidad_suma-ncol(datos[,c(102:106)]))/(ncol(datos[,c(102:106)])*7-ncol(datos[,c(102:106)])))*100,2)
Indicadores
datos$P1 <- rowMeans(datos[, c("P1_Externa", "P1_Interna","P1_Ciberseguridad")], na.rm = TRUE)
datos$P2 <- datos$P2_Infraestructura
datos$P3 <- rowMeans(datos[, c("P3_Higiene", "P3_Inocuidad")], na.rm = TRUE)
datos$P_calculada<-round(rowMeans(datos[, c("P1","P2","P3")], na.rm = TRUE),2)
Variables Generales -
Encuesta
datos$P1_Externa_general<-round(((datos$`De forma general, y considerando todos los aspectos anteriores, se sintió seguro en el desplazamiento hasta el establecimiento:`-1)/(7-1))*100,2)
datos$P1_Interna_general<-round(((datos$`¿De forma general, y considerando todos los aspectos anteriores, se sintió seguro frente actos delictivos en su estancia en el establecimiento?`-1)/(7-1))*100,2)
datos$P1_Ciberseguridad_general<-round(((datos$`¿De forma general, y considerando todos los aspectos anteriores, se sintió seguro en la facturación y pago dentro del establecimiento?`-1)/(7-1))*100,2)
datos$P2_Infraestructura_general<-round(((datos$`¿De forma general, y considerando todos los aspectos anteriores, se sintió protegido frente al riesgo de accidentes en su estancia en el establecimiento?`-1)/(7-1))*100,2)
datos$P3_Higiene_general<-round(((datos$`De forma general, y considerando todos los aspectos anteriores, se sintió seguro y confiado frente a la higiene y limpieza en su estancia en el establecimiento:`-1)/(7-1))*100,2)
datos$P3_Inocuidad_general<-round(((datos$`De forma general, y considerando todos los aspectos anteriores, sintió que fue atendido con protocolos de bioseguridad:`-1)/(7-1))*100,2)
datos$P1_general<- round(((rowMeans(datos[, c("P1_Externa_general", "P1_Interna_general","P1_Ciberseguridad_general")], na.rm = TRUE)-ncol(datos[,c(53, 62,69)]))/(ncol(datos[,c(53, 62,69)])*7-ncol(datos[,c(53, 62,69)]))),2)
datos$P2_general<-datos$P2_Infraestructura_general
datos$P3_general<- rowMeans(datos[, c("P3_Higiene_general", "P3_Inocuidad_general")], na.rm = TRUE)
datos$P_encuesta<-round(rowMeans(datos[, c("P1_general","P2_general","P3_general")], na.rm = TRUE),2)
Calcular
estadísticas
Resumo <- function(x, na.rm = TRUE) {
if (na.rm) x <- na.omit(x)
c(
Maximo = max(x),
Minimo = min(x),
Media = mean(x),
Desviacion = sd(x),
CV = sd(x) / mean(x) # Coeficiente de variación
)
}
# Aplicar la función a las columnas seleccionadas
estadisticas <- apply(datos[, c(130:133)], 2, Resumo)
estadisticas_P1 <- apply(datos[, c(119,121,123)], 2, Resumo)
estadisticas_P3 <- apply(datos[, c(127,129)], 2, Resumo)
estadisticas_general <- apply(datos[, c(140:143)], 2, Resumo)
estadisticas_P1_general <- apply(datos[, c(134:136)], 2, Resumo)
estadisticas_P3_general <- apply(datos[, c(138,139)], 2, Resumo)
# Convertir a un data frame para mejor visualización
tabla_estadisticas <- as.data.frame(t(estadisticas))
tabla_estadisticas_P1 <- as.data.frame(t(estadisticas_P1))
tabla_estadisticas_P3 <- as.data.frame(t(estadisticas_P3))
tabla_estadisticas_general <- as.data.frame(t(estadisticas_general))
tabla_estadisticas_P1_general <- as.data.frame(t(estadisticas_P1_general))
tabla_estadisticas_P3_general <- as.data.frame(t(estadisticas_P3_general))
# Mostrar la tabla
print(tabla_estadisticas)
## Maximo Minimo Media Desviacion CV
## P1 95.45333 27.690 51.12417 28.55933 0.5586268
## P2 89.11000 38.610 51.97875 19.38993 0.3730358
## P3 100.00000 39.845 59.75187 23.86052 0.3993267
## P_calculada 94.85000 35.380 54.28375 23.71505 0.4368720
print(tabla_estadisticas_general)
## Maximo Minimo Media Desviacion CV
## P1_general 5.39 1.99 3.07250 1.342224 0.4368507
## P2_general 100.00 16.67 68.74875 32.654243 0.4749794
## P3_general 100.00 25.00 50.00000 29.880715 0.5976143
## P_encuesta 68.46 31.53 40.60500 12.051736 0.2968042
Gráfico de radar
library(pROC);library(fmsb)
## Type 'citation("pROC")' for a citation.
##
## Attaching package: 'pROC'
## The following objects are masked from 'package:stats':
##
## cov, smooth, var
## Registered S3 methods overwritten by 'fmsb':
## method from
## print.roc pROC
## plot.roc pROC
##
## Attaching package: 'fmsb'
## The following object is masked from 'package:pROC':
##
## roc
radar<-data.frame(t(tabla_estadisticas[,-c(4,5)]))
colnames(radar)=rownames(tabla_estadisticas)
print(radar)
## P1 P2 P3 P_calculada
## Maximo 95.45333 89.11000 100.00000 94.85000
## Minimo 27.69000 38.61000 39.84500 35.38000
## Media 51.12417 51.97875 59.75187 54.28375
radar_general<-data.frame(t(tabla_estadisticas_general[,-c(4,5)]))
colnames(radar_general)=rownames(tabla_estadisticas_general)
print(radar_general)
## P1_general P2_general P3_general P_encuesta
## Maximo 5.3900 100.00000 100 68.460
## Minimo 1.9900 16.67000 25 31.530
## Media 3.0725 68.74875 50 40.605
colnames(radar_general) = colnames(radar)
radar1 =rbind(radar_general, radar[3, ])
rownames(radar1) = c("Maximo", "Minimo", "General", "Calculado")
radar1[1,] = 100
radar1[2,] = 0
colnames(radar1)=c("Seguridad ante actos delictivos",
"Seguridad física",
"Bioseguridad",
"Percepción Seguridad Total")
areas <- c(rgb(1, 0, 0, 0.25),
rgb(0, 1, 0, 0.25),
rgb(0, 0, 1, 0.25))
radarchart(radar1,
cglty = 1, # Tipo de línea del grid
cglcol = "gray", # Color líneas grid
pcol = 2:4, # Color para cada línea
plwd = 2, # Ancho para cada línea
plty = 1, # Tipos de línea
pfcol = areas) # Color de las áreas
title(main = "Comparación de Indicadores de Percepción de Seguridad en Restaurantes de Cali", # Texto del título
col.main = "blue", # Color del título
font.main = 2, # Estilo del texto (2: negrita)
cex.main = 1.5) # Tamaño del texto
legend("topright",
legend = c("Encuesta","Calculado"),
bty = "n", pch = 20, col = areas,
text.col = "grey25", pt.cex = 2)
