Carga de Datos

# Cargar archivo
rondas <- read_excel(params$archivo_rondas)

# Revisar nombres de columnas
colnames(rondas)
##  [1] "Empresa"              "Cód. Ronda"           "Nombre Ronda"        
##  [4] "Correlativo Ronda"    "IMEI"                 "Nombre Dispositivo"  
##  [7] "CECOS"                "Cliente"              "Sector"              
## [10] "Instalación"          "Inicio Ronda"         "Fin Ronda"           
## [13] "Duración en minutos"  "Observación"          "Total Puntos"        
## [16] "Puntos Realizados"    "Puntos Omitidos"      "Distancia Recorrida" 
## [19] "Usuario Ronda"        "Flog"                 "Nombre Usuario Ronda"
## [22] "Cargo Usuario Ronda"

Preparación de Datos

# Convertir fechas y extraer campos de interés
rondas <- rondas %>%
  mutate(
    Fecha = as.Date(`Inicio Ronda`),
    Mes = format(Fecha, "%Y-%m"),
    Día = weekdays(Fecha),
    Vigilante = `Usuario Ronda`,
    Puntos_Realizados = as.numeric(`Puntos Realizados`)
  ) %>%
  filter(!is.na(Fecha))

KPI: Total de Rondas por Día

kpi_diario <- rondas %>%
  count(Fecha)

ggplot(kpi_diario, aes(x = Fecha, y = n)) +
  geom_line(color = "steelblue") +
  geom_point() +
  labs(title = "Rondas por Día", x = "Fecha", y = "Cantidad de Rondas") +
  theme_minimal()

KPI: Total de Rondas por Mes

kpi_mensual <- rondas %>%
  count(Mes)

ggplot(kpi_mensual, aes(x = Mes, y = n)) +
  geom_col(fill = "darkgreen") +
  labs(title = "Rondas por Mes", x = "Mes", y = "Cantidad") +
  theme_minimal() +
  coord_flip()

Rondas por Vigilante

rondas_vigilante <- rondas %>%
  count(Vigilante, sort = TRUE)

datatable(rondas_vigilante, colnames = c("Vigilante", "Cantidad de Rondas"))

Porcentaje de Cumplimiento (Puntos Realizados / Total Puntos)

rondas <- rondas %>%
  mutate(Cumplimiento = round((`Puntos Realizados` / `Total Puntos`) * 100, 1))

cumplimiento_vigilante <- rondas %>%
  group_by(Vigilante) %>%
  summarise(
    Media_Cumplimiento = mean(Cumplimiento, na.rm = TRUE),
    Rondas = n()
  ) %>%
  arrange(desc(Media_Cumplimiento))

datatable(cumplimiento_vigilante)

Gráfico de Cumplimiento Promedio por Vigilante

ggplot(cumplimiento_vigilante, aes(x = reorder(Vigilante, Media_Cumplimiento), y = Media_Cumplimiento)) +
  geom_col(fill = "orange") +
  coord_flip() +
  labs(title = "Cumplimiento Promedio por Vigilante", x = "Vigilante", y = "% de Cumplimiento") +
  theme_minimal()