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)]

1 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)

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)

3 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)

4 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)

5 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)

6 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

7 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)