1 Introducción

Este informe analiza los datos de los comparendos de tránsito utilizando R. La base de datos, “BD Comparendos SENA.xlsx”, contiene registros de infracciones ocurridas en abril y mayo de 2010. El objetivo es comprender las tendencias de comportamiento y seguridad vial para informar acciones de mejora.

1.1 Importar base de datos

library(readxl)
ruta_excel <-"/Users/rodrigoarrietarueda/Desktop/SENA/R/BD Comparendos SENA.xlsx"
BD_Comparendos_SENA <- read_excel(ruta_excel)
View(BD_Comparendos_SENA)

2 Ejercicios

conteo_sexo <- table(BD_Comparendos_SENA$SEXO)
conteo_sexo
## 
##   EMPRESA  FEMENINO MASCULINO 
##       467       970       683
tabla_comparendos <- table(BD_Comparendos_SENA$SEXO, BD_Comparendos_SENA$`VEHICULO`) 
tabla_comparendos
##            
##             CARRO MOTO
##   EMPRESA     310  157
##   FEMENINO    889   81
##   MASCULINO   565  118
conteo_nombres_mes <- table(BD_Comparendos_SENA$'MES')
conteo_nombres_mes
## 
## ABRIL  MAYO 
##   712  1408
total_valor_a_pagar <- sum(BD_Comparendos_SENA$VALOR_A_PAGAR) 
cat("Total de VALOR_A_PAGAR:", total_valor_a_pagar)
## Total de VALOR_A_PAGAR: 739614300
conteo_infracciones <- table(BD_Comparendos_SENA$ID)
persona_mas_infracciones<- names(conteo_infracciones)[which.max(conteo_infracciones)]
cat("La Identificación de la persona o empresa con más infracciones es:", persona_mas_infracciones, "\n")
## La Identificación de la persona o empresa con más infracciones es: 860059294
# Crear una función para determinar si un ID es de un extranjero
es_extranjero <- function(id) {
  nchar(as.character(id)) < 8
}
conteo_extranjeros <- sum(es_extranjero(BD_Comparendos_SENA$ID))
cat("El número de extranjeros que cometieron infracciones es:", conteo_extranjeros, "\n")
## El número de extranjeros que cometieron infracciones es: 4

2.1 Nota:(“función aggregate”)

  • Usamos la función “aggregate”, se suma el total valor a pagar por meses:

La función aggregate en R se utiliza para aplicar una función de agregación a los datos de un dataframe, generalmente agrupando por una o más variables.

suma_por_mes <- aggregate(VALOR_A_PAGAR ~ `MES`, BD_Comparendos_SENA, sum)
suma_por_mes

2.2 Nota:(“función which.max”)

  • Usamos la función “función which.max”, se hace un conteo de las ocurrencias de la columna COD. INFRACCION:

La función which.max(conteo_codigos) encontrará del recuento el número máximo y la función names(conteo_codigos) traerá el nombre de la infracción.

conteo_codigos <- table(BD_Comparendos_SENA$`COD. INFRACCION`) 
codigo_mas_comun <- names(conteo_codigos)[which.max(conteo_codigos)]
conteo_codigos
## 
##   64   67   76   77 
## 1626  105    4  385
cat("El código de infracción más común es:", codigo_mas_comun)
## El código de infracción más común es: 64

3 Gráficos:

colores <- c("yellow", "pink","blue") 
porcentajes <- round(100 * conteo_sexo / sum(conteo_sexo), 1) 
etiquetas <- paste(names(porcentajes), "\n", porcentajes, "%") 
pie(conteo_sexo, main = "Distribución de Comparendos por Género", col = colores, labels = etiquetas)

-Se crea un grafico de barras, que muestra con qué frecuencia se cometió cada código de infracción y personalizamos con colores el grafico:

colores <- c("red", "lightblue","black","green")
barplot(conteo_codigos, main = "Frecuencia de Códigos de Infracción", 
xlab = "Código de Infracción", ylab = "Frecuencia", col = colores)

barplot(as.matrix(tabla_comparendos), beside = TRUE,
legend.text = rownames(tabla_comparendos), col = c("brown","gray","green"),
main = "Comparendos por Género y Tipo de Vehículo", 
xlab = "VEHICULO", ylab = "Cantidad", ylim = c(0, max(tabla_comparendos) + 10))

hist(as.numeric(BD_Comparendos_SENA$`MES EN DIGITO`),
     breaks = c(3.5, 4.5, 5.5),
     main = "Cantidad de Comparendos por Mes",
     xlab = "Mes",
     ylab = "Cantidad de Comparendos",
     col = "lightgreen",
     xaxt = 'n')
axis(1, at = c(4, 5), labels = c("Abril", "Mayo"))

BD_Comparendos_SENA$`FECHA DE COMPARENDO` <- as.Date(BD_Comparendos_SENA$`FECHA DE COMPARENDO`, format = "%Y-%m-%d")
conteo_fechas <- table(BD_Comparendos_SENA$`FECHA DE COMPARENDO`)
plot(as.Date(names(conteo_fechas)), as.numeric(conteo_fechas),
     type = "l",
     main = "Tendencia de Comparendos a lo Largo del Tiempo",
     xlab = "Fecha",
     ylab = "Cantidad de Comparendos",
     col = "blue")