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.
library(readxl)
ruta_excel <-"/Users/rodrigoarrietarueda/Desktop/SENA/R/BD Comparendos SENA.xlsx"
BD_Comparendos_SENA <- read_excel(ruta_excel)
View(BD_Comparendos_SENA)
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
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
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
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")