install.packages(“readr”) install.packages(“dplyr”) install.packages(“Amelia”) install.packages(“Rcpp”) install.packages(“tidyr”) install.packages(“ggplot2”)

library(readr) library(dplyr)

Actividad Evaluativa primer corte (plazo máximo 21 de agosto):

Realice un análisis descriptivo básico de la base de datos basado en tablas de resumen y en gráficos Accidentalidad_en_Barranquilla.csv . Deben entregar un script .R con los códigos usados. Este análisis puede consistir en:

1. Contextualizar tanto la base de datos como las variables describiendo en qué consiste cada una de ellas. La base de datos está en el sitio web:

https://www.datos.gov.co/Transporte/Accidentalidad-en-Barranquilla/yb9r-2dsi

La base de datos sobre la acccidentalidad en Barranquilla resume los accidentes de tránsito ocurridos en la ciudad hasta el día 17 de julio de 2024. Un adecuado estudio y análisis de la misma permite comprender las posibles circunstancias en las que se producen estos accidentes y las consecuencias de los mismos. Esto podría ayudar a prevenir y concientizar a la ciudadanía sobre la seguridad vial de la ciudad. Las variables estudiadas son:
- Fecha del accidente: Indica el día específico en el que ocurrió el accidente. Utiliza el formato año-mes-dia.
- Hora del accidente: Evidencia la hora exacta en la que se produjo el accidente.
- Gravedad de accidente: Describe la severidad del accidente. Algunas de las categorías son: Con heridos, con muertos, solo daños.
- Clase de accidente: Describe el tipo de accidente. Por ejemplo: Atropello, choque, caída del ocupante.
- Sitio exacto: Detalla la dirección de accidente.
- Cantidad de heridos: Registra el número de personas heridas en el accidente.
- Cantidad de muertos: Registra el número de personas muertas en el accidente.
- Cantidad de accidentes: Registra el número de accidentes ocurridos en a la fecha y hora registradas.
- Año: Indica el año en el que se registró el accidente.
- Mes: Indica el mes en el que se registró el accidente.
- Día: Indica el día de la semana en la que se registro el accidente.

2. Analizar las características de la base de datos.

DATOS <- read.csv(file.choose(),header = TRUE, sep = ",")
dim(DATOS)
## [1] 25610    11
names(DATOS)
##  [1] "FECHA_ACCIDENTE"                  "HORA_ACCIDENTE"                  
##  [3] "GRAVEDAD_ACCIDENTE"               "CLASE_ACCIDENTE"                 
##  [5] "SITIO_EXACTO_ACCIDENTE"           "CANT_HERIDOS_EN._SITIO_ACCIDENTE"
##  [7] "CANT_MUERTOS_EN._SITIO_ACCIDENTE" "CANTIDAD_ACCIDENTES"             
##  [9] "AÑO_ACCIDENTE"                    "MES_ACCIDENTE"                   
## [11] "DIA_ACCIDENTE"

No. Filas: 25610
No. Columnas: 11
Nombres de variables: “FECHA_ACCIDENTE”, “HORA_ACCIDENTE”, “GRAVEDAD_ACCIDENTE”, “CLASE_ACCIDENTE”, “SITIO_EXACTO_ACCIDENTE”, “CANT_HERIDOS_EN._SITIO_ACCIDENTE”, “CANT_MUERTOS_EN._SITIO_ACCIDENTE”, “CANTIDAD_ACCIDENTES”, “AÑO_ACCIDENTE” , “MES_ACCIDENTE”, “DIA_ACCIDENTE”
Tipos de variables:
Cualitativas Nominales: FECHA_ACCIDENTE, HORA_ACCIDENTE, CLASE_ACCIDENTE, SITIO_EXACTO_ACCIDENTE.
Cualitativas Ordinales: GRAVEDAD_ACCIDENTE, AÑO_ACCIDENTE, MES_ACCIDENTE, DIA_ACCIDENTE.
Cuantitativas Discretas: CANT_HERIDOS_EN_SITIO_ACCIDENTE, CANT_MUERTOS_EN_SITIO_ACCIDENTE, CANTIDAD_ACCIDENTES.

3.Analizar cada una de las variables según su tipo: numéricas y categóricas.

Variables Numéricas

Las variables numéricas en la base de datos son:
CANT_HERIDOS_EN_SITIO_ACCIDENTE
CANT_MUERTOS_EN_SITIO_ACCIDENTE
CANTIDAD_ACCIDENTES

summary(DATOS$CANT_MUERTOS_EN._SITIO_ACCIDENTE)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   1.000   1.000   1.000   1.036   1.000   2.000   25358
summary(DATOS$CANT_HERIDOS_EN._SITIO_ACCIDENTE)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   1.000   1.000   1.000   1.472   2.000  42.000   15626
summary(DATOS$CANTIDAD_ACCIDENTES)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##       1       1       1       1       1       2
Variables Categóricas

Las variables categóricas en tu base de datos son:

FECHA_ACCIDENTE: No le crearé table dado que el resumen no es muy diciente.
HORA_ACCIDENTE: No le crearé table dado que el resumen no es muy diciente.
GRAVEDAD_ACCIDENTE
CLASE_ACCIDENTE
SITIO_EXACTO_ACCIDENTE: No le crearé table dado que el resumen no es muy diciente.
AÑO_ACCIDENTE
MES_ACCIDENTE
DIA_ACCIDENTE

FECHA_FC = as.factor(DATOS$FECHA_ACCIDENTE)
HORA_FC = as.factor(DATOS$HORA_ACCIDENTE)
GRAVEDAD_FC = as.factor(DATOS$GRAVEDAD_ACCIDENTE)
CLASE_FC = as.factor(DATOS$CLASE_ACCIDENTE)
SITIO_FC = as.factor(DATOS$SITIO_EXACTO_ACCIDENTE)
AÑO_FC = as.factor(DATOS$AÑO_ACCIDENTE)
MES_FC = as.factor(DATOS$MES_ACCIDENTE)
DIA_FC = as.factor(DATOS$DIA_ACCIDENTE)

head(summary(DATOS$FECHA_FC), 10)
## Length  Class   Mode 
##      0   NULL   NULL
head(summary(DATOS$HORA_FC), 10)
## Length  Class   Mode 
##      0   NULL   NULL
head(summary(DATOS$SITIO_FC), 10)
## Length  Class   Mode 
##      0   NULL   NULL
table(GRAVEDAD_FC)
## GRAVEDAD_FC
## Con heridos Con muertos  Solo daños 
##        9901         252       15457
barplot(summary(GRAVEDAD_FC))

table(CLASE_FC)
## CLASE_FC
##      Atropello Caida Ocupante         Choque       Incendio           Otro 
##           1344            194          23819             13            123 
##    Volcamiento 
##            117
barplot(summary(CLASE_FC))

table(AÑO_FC)
## AÑO_FC
## 2018 2019 2020 2021 2022 2023 2024 
## 5898 5645 3281 4700 3683 1662  741
barplot(summary(AÑO_FC))

table(MES_FC)
## MES_FC
##     April    August  December  February   January      July      June     March 
##      2010      1918      2189      2477      2349      1932      2103      2446 
##       May  November   October September 
##      2121      1995      2090      1980
barplot(summary(MES_FC))

table(DIA_FC)
## DIA_FC
##  Fri  Mon  Sat  Sun  Thu  Tue  Wed 
## 3920 3774 3735 2577 3756 4009 3839
barplot(summary(DIA_FC))

4. Filtrar la base de datos para entender mejor su estructura. Aplique filtros en al menos cinco oportunidades.

Filtro de accidentes en diciembre en los que hubo victimas mortales agrupados por año
library(dplyr)
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)

  acc_dec_muertos <- filter(DATOS, GRAVEDAD_ACCIDENTE == "Con muertos", MES_FC == "December") %>%
    group_by(AÑO_ACCIDENTE) %>% 
    summarise(CANTIDAD_ACCIDENTES = n(), .groups = 'drop')
  acc_dec_muertos
## # A tibble: 6 × 2
##   AÑO_ACCIDENTE CANTIDAD_ACCIDENTES
##           <int>               <int>
## 1          2018                   1
## 2          2019                   5
## 3          2020                   5
## 4          2021                   2
## 5          2022                   2
## 6          2023                   6
  ggplot(acc_dec_muertos, aes(x = factor(AÑO_ACCIDENTE), y = CANTIDAD_ACCIDENTES, fill = AÑO_ACCIDENTE)) +
  geom_bar(stat = "identity") +
  labs(title = "Cantidad de accidentes con muertos en diciembre por año",
       x = "Año del accidente",
       y = "Cantidad de accidentes") +
  theme_minimal()

Filtro de accidentes en los que hubo victimas mortales agrupados por dia de la semana
library(dplyr)
library(ggplot2)

acc_muertos <- filter(DATOS, GRAVEDAD_ACCIDENTE == "Con muertos") %>%
  group_by(DIA_ACCIDENTE) %>% 
  summarise(CANTIDAD_ACCIDENTES = n(), .groups = 'drop')
acc_muertos
## # A tibble: 7 × 2
##   DIA_ACCIDENTE CANTIDAD_ACCIDENTES
##   <chr>                       <int>
## 1 Fri                            33
## 2 Mon                            43
## 3 Sat                            36
## 4 Sun                            55
## 5 Thu                            28
## 6 Tue                            25
## 7 Wed                            32
dias_semana <- c("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")
acc_muertos <- acc_muertos %>%
  mutate(DIA_ACCIDENTE = factor(DIA_ACCIDENTE, levels = dias_semana))

ggplot(acc_muertos, aes(x = DIA_ACCIDENTE, y = CANTIDAD_ACCIDENTES, fill = DIA_ACCIDENTE)) +
  geom_bar(stat = "identity") +
  labs(title = "Cantidad de accidentes con muertos por día de la semana",
       x = "Día del accidente",
       y = "Cantidad de accidentes") +
  theme_minimal() 

Filtro de atropellos ocurridos el día lunes agrupados por año
library(dplyr)
library(ggplot2)

acc_lunes_atropello <- filter(DATOS, DIA_ACCIDENTE == "Mon", CLASE_ACCIDENTE == "Atropello") %>%
  group_by(AÑO_ACCIDENTE) %>% 
  summarise(CANTIDAD_ACCIDENTES = n(), .groups = 'drop')
acc_lunes_atropello
## # A tibble: 7 × 2
##   AÑO_ACCIDENTE CANTIDAD_ACCIDENTES
##           <int>               <int>
## 1          2018                  38
## 2          2019                  38
## 3          2020                  30
## 4          2021                  26
## 5          2022                  42
## 6          2023                  32
## 7          2024                  13
ggplot(acc_lunes_atropello, aes(x = factor(AÑO_ACCIDENTE), y = CANTIDAD_ACCIDENTES, fill = AÑO_ACCIDENTE)) +
  geom_bar(stat = "identity") +
  labs(title = "Cantidad de atropellos los lunes por año",
       x = "Año del accidente",
       y = "Cantidad de accidentes") +
  theme_minimal()

Filtro de choques ocurridos el día lunes agrupados por mes
library(dplyr)
library(ggplot2)

meses_ordenados <- c("January", "February", "March", "April", "May", "June",
                     "July", "August", "September", "October", "November", "December")

acc_lunes_choques <- filter(DATOS, DIA_ACCIDENTE == "Mon", CLASE_ACCIDENTE == "Choque") %>%
  group_by(MES_ACCIDENTE) %>% 
  summarise(CANTIDAD_ACCIDENTES = n(), .groups = 'drop') %>%
  mutate(MES_ACCIDENTE = factor(MES_ACCIDENTE, levels = meses_ordenados))

# Crear el gráfico
ggplot(acc_lunes_choques, aes(x = MES_ACCIDENTE, y = CANTIDAD_ACCIDENTES, fill = MES_ACCIDENTE)) +
  geom_bar(stat = "identity") +
  labs(title = "Cantidad de accidentes de tipo 'Choque' en los lunes por mes",
       x = "Mes del accidente",
       y = "Cantidad de accidentes") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) 

Filtro de accidentes con heridos agrupados por clase de accidente
library(dplyr)
library(ggplot2)

acc_heridos <- filter(DATOS, GRAVEDAD_ACCIDENTE == "Con heridos") %>%
  group_by(CLASE_ACCIDENTE) %>% 
  summarise(CANTIDAD_ACCIDENTES = n(), .groups = 'drop')
acc_heridos
## # A tibble: 6 × 2
##   CLASE_ACCIDENTE CANTIDAD_ACCIDENTES
##   <chr>                         <int>
## 1 Atropello                      1266
## 2 Caida Ocupante                  188
## 3 Choque                         8277
## 4 Incendio                          1
## 5 Otro                             83
## 6 Volcamiento                      86
ggplot(acc_heridos, aes(x = "", y = CANTIDAD_ACCIDENTES, fill = CLASE_ACCIDENTE)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar(theta = "y") +
  labs(title = "Distribución de accidentes con heridos por clase de accidente",
       fill = "Clase de accidente")   +
  scale_fill_manual(values = c(
   "Atropello" = "#f6c1c1", 
    "Volcamiento" = "#f4a261", 
    "Otro" = "#98c9e3", 
    "Choque" = "#d6a6f2",
    "Caida Ocupante" = "#b9d6a8",
    "Incendio" = "#f2a1a1")) +
  theme_minimal() +
  theme(axis.text.x = element_blank(),  
        axis.title.x = element_blank())

5. Utilice la función table para explorar la base de datos.

table(DATOS$MES_ACCIDENTE)
## 
##     April    August  December  February   January      July      June     March 
##      2010      1918      2189      2477      2349      1932      2103      2446 
##       May  November   October September 
##      2121      1995      2090      1980
table(DATOS$AÑO_ACCIDENTE)
## 
## 2018 2019 2020 2021 2022 2023 2024 
## 5898 5645 3281 4700 3683 1662  741
table(DATOS$DIA_ACCIDENTE)
## 
##  Fri  Mon  Sat  Sun  Thu  Tue  Wed 
## 3920 3774 3735 2577 3756 4009 3839
table(DATOS$CLASE_ACCIDENTE)
## 
##      Atropello Caida Ocupante         Choque       Incendio           Otro 
##           1344            194          23819             13            123 
##    Volcamiento 
##            117
table(DATOS$GRAVEDAD_ACCIDENTE)
## 
## Con heridos Con muertos  Solo daños 
##        9901         252       15457

6. Identifique los valores NA (Not Available) en la base de datos.

na_count <- colSums(is.na(DATOS)) na_count

Hay un total de 15626 valores NA en CANT_HERIDOS_EN._SITIO_ACCIDENTE
Hay un total de 25358 valores NA en CANT_MUERTOS_EN._SITIO_ACCIDENTE

A continuación dibujaremos un gráfico que nos permitirá ver mejor la anterior afirmación.

library(Amelia)
## Cargando paquete requerido: Rcpp
## ## 
## ## Amelia II: Multiple Imputation
## ## (Version 1.8.2, built: 2024-04-10)
## ## Copyright (C) 2005-2024 James Honaker, Gary King and Matthew Blackwell
## ## Refer to http://gking.harvard.edu/amelia/ for more information
## ##
library(Rcpp)
HERIDOS_NA<-is.na(DATOS$CANT_HERIDOS_EN._SITIO_ACCIDENTE)
MUERTOS_NA<-is.na(DATOS$CANT_MUERTOS_EN._SITIO_ACCIDENTE)
NAS_ALL <- !complete.cases(DATOS[HERIDOS_NA | MUERTOS_NA,])
head(DATOS[NAS_ALL, ], 20)
##            FECHA_ACCIDENTE HORA_ACCIDENTE GRAVEDAD_ACCIDENTE CLASE_ACCIDENTE
## 1  2018-01-01T00:00:00.000    01:30:00:am        Con heridos       Atropello
## 2  2018-01-01T00:00:00.000    02:00:00:pm         Solo daños          Choque
## 3  2018-01-01T00:00:00.000    04:00:00:am         Solo daños          Choque
## 4  2018-01-01T00:00:00.000    04:30:00:am         Solo daños          Choque
## 5  2018-01-01T00:00:00.000    05:20:00:pm         Solo daños          Choque
## 6  2018-01-01T00:00:00.000    06:00:00:pm        Con heridos          Choque
## 7  2018-01-01T00:00:00.000    12:50:00:am        Con heridos       Atropello
## 8  2018-01-02T00:00:00.000    02:30:00:pm         Solo daños          Choque
## 9  2018-01-02T00:00:00.000    03:00:00:pm         Solo daños          Choque
## 10 2018-01-02T00:00:00.000    03:45:00:pm         Solo daños          Choque
## 11 2018-01-02T00:00:00.000    04:10:00:pm         Solo daños          Choque
## 12 2018-01-02T00:00:00.000    05:30:00:pm         Solo daños          Choque
## 13 2018-01-02T00:00:00.000    05:45:00:pm         Solo daños          Choque
## 14 2018-01-02T00:00:00.000    07:00:00:pm         Solo daños          Choque
## 15 2018-01-02T00:00:00.000    07:30:00:pm         Solo daños          Choque
## 16 2018-01-02T00:00:00.000    08:40:00:pm        Con heridos          Choque
## 17 2018-01-02T00:00:00.000    09:00:00:am         Solo daños          Choque
## 18 2018-01-02T00:00:00.000    11:00:00:pm        Con heridos          Choque
## 19 2018-01-03T00:00:00.000    02:20:00:pm         Solo daños          Choque
## 20 2018-01-03T00:00:00.000    03:15:00:pm         Solo daños          Choque
##    SITIO_EXACTO_ACCIDENTE CANT_HERIDOS_EN._SITIO_ACCIDENTE
## 1             CL 87 9H 24                                1
## 2            CL 110 CR 46                               NA
## 3    AV CIRCUNVALAR CR 9G                               NA
## 4          CLLE 72 CRA 29                               NA
## 5         VIA 40 CALLE 75                               NA
## 6              CR 8 CL 41                                3
## 7       CLLE 119B CRA 11B                                1
## 8        CARRERA 25 37-42                               NA
## 9            CR 51B 1D 35                               NA
## 10        VIA 40  CLLE 85                               NA
## 11            CL 19 CR 2C                               NA
## 12          VIA 40 CL 77B                               NA
## 13          CL 89 CON 75B                               NA
## 14            CL 47 CR 38                               NA
## 15         CLLE 96 CRA 64                               NA
## 16      CIRCUNVALAR CR 9G                                2
## 17         CLLE 39 CRA 27                               NA
## 18            CL 30 CR 30                                1
## 19           CL 110 CR 6Q                               NA
## 20            CL 19 CR 5C                               NA
##    CANT_MUERTOS_EN._SITIO_ACCIDENTE CANTIDAD_ACCIDENTES AÑO_ACCIDENTE
## 1                                NA                   1          2018
## 2                                NA                   1          2018
## 3                                NA                   1          2018
## 4                                NA                   1          2018
## 5                                NA                   1          2018
## 6                                NA                   1          2018
## 7                                NA                   1          2018
## 8                                NA                   1          2018
## 9                                NA                   1          2018
## 10                               NA                   1          2018
## 11                               NA                   1          2018
## 12                               NA                   1          2018
## 13                               NA                   1          2018
## 14                               NA                   1          2018
## 15                               NA                   1          2018
## 16                               NA                   1          2018
## 17                               NA                   1          2018
## 18                               NA                   1          2018
## 19                               NA                   1          2018
## 20                               NA                   1          2018
##    MES_ACCIDENTE DIA_ACCIDENTE
## 1        January           Mon
## 2        January           Mon
## 3        January           Mon
## 4        January           Mon
## 5        January           Mon
## 6        January           Mon
## 7        January           Mon
## 8        January           Tue
## 9        January           Tue
## 10       January           Tue
## 11       January           Tue
## 12       January           Tue
## 13       January           Tue
## 14       January           Tue
## 15       January           Tue
## 16       January           Tue
## 17       January           Tue
## 18       January           Tue
## 19       January           Wed
## 20       January           Wed
suppressWarnings(require(Amelia))
suppressWarnings(missmap(DATOS[NAS_ALL, ]))

7. Analice la presencia de posibles valores atípicos.

summary(DATOS)
##  FECHA_ACCIDENTE    HORA_ACCIDENTE     GRAVEDAD_ACCIDENTE CLASE_ACCIDENTE   
##  Length:25610       Length:25610       Length:25610       Length:25610      
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##                                                                             
##  SITIO_EXACTO_ACCIDENTE CANT_HERIDOS_EN._SITIO_ACCIDENTE
##  Length:25610           Min.   : 1.000                  
##  Class :character       1st Qu.: 1.000                  
##  Mode  :character       Median : 1.000                  
##                         Mean   : 1.472                  
##                         3rd Qu.: 2.000                  
##                         Max.   :42.000                  
##                         NA's   :15626                   
##  CANT_MUERTOS_EN._SITIO_ACCIDENTE CANTIDAD_ACCIDENTES AÑO_ACCIDENTE 
##  Min.   :1.000                    Min.   :1           Min.   :2018  
##  1st Qu.:1.000                    1st Qu.:1           1st Qu.:2019  
##  Median :1.000                    Median :1           Median :2020  
##  Mean   :1.036                    Mean   :1           Mean   :2020  
##  3rd Qu.:1.000                    3rd Qu.:1           3rd Qu.:2021  
##  Max.   :2.000                    Max.   :2           Max.   :2024  
##  NA's   :25358                                                      
##  MES_ACCIDENTE      DIA_ACCIDENTE     
##  Length:25610       Length:25610      
##  Class :character   Class :character  
##  Mode  :character   Mode  :character  
##                                       
##                                       
##                                       
## 
par(mfrow=c(1,3))
boxplot(DATOS$CANT_HERIDOS_EN._SITIO_ACCIDENTE,main="CANT_HERIDOS_EN._SITIO_ACCIDENTE")  
boxplot(DATOS$CANT_MUERTOS_EN._SITIO_ACCIDENTE,main="CANT_MUERTOS_EN._SITIO_ACCIDENTE") 
boxplot(DATOS$CANTIDAD_ACCIDENTES,main="CANTIDAD_ACCIDENTES") #guardar atipicos como NA y darles el mismmo tratamiento

Como podemos ver en las columnas de CANT_HERIDOS_EN._SITIO_ACCIDENTE, CANT_MUERTOS_EN._SITIO_ACCIDENTE y CANTIDAD_ACCIDENTES tenemos presencia de valores atípicos altos. Debido a eso, procederemos a filtrar la base de datos para buscar los registros donde encontramos estos valores y luego los remplazaremos por NA para eliminarlos. Acto seguido, procederemos a reemplazar todos los valores NA por la mediana de cada una de las columnas. Finalmente, con la ayuda de un esquema de los datos, verificaremos que no se encuentren NAS.

require(dplyr)
head(filter(DATOS, CANT_HERIDOS_EN._SITIO_ACCIDENTE > 3), 20)
##            FECHA_ACCIDENTE HORA_ACCIDENTE GRAVEDAD_ACCIDENTE CLASE_ACCIDENTE
## 1  2018-01-07T00:00:00.000    08:30:00:pm        Con heridos          Choque
## 2  2018-01-11T00:00:00.000    09:40:00:am        Con heridos          Choque
## 3  2018-01-15T00:00:00.000    03:00:00:am        Con heridos          Choque
## 4  2018-01-18T00:00:00.000    11:30:00:am        Con heridos          Choque
## 5  2018-01-19T00:00:00.000    11:50:00:pm        Con heridos          Choque
## 6  2018-02-09T00:00:00.000    01:30:00:am        Con heridos          Choque
## 7  2018-02-11T00:00:00.000    11:50:00:pm        Con heridos          Choque
## 8  2018-02-28T00:00:00.000    08:45:00:pm        Con heridos          Choque
## 9  2018-03-06T00:00:00.000    05:00:00:am        Con heridos          Choque
## 10 2018-03-06T00:00:00.000    07:00:00:am        Con heridos          Choque
## 11 2018-03-07T00:00:00.000    06:55:00:am        Con heridos          Choque
## 12 2018-03-22T00:00:00.000    09:20:00:pm        Con heridos          Choque
## 13 2018-03-27T00:00:00.000    05:10:00:pm        Con heridos          Choque
## 14 2018-04-13T00:00:00.000    05:00:00:am        Con heridos          Choque
## 15 2018-04-21T00:00:00.000    06:00:00:pm        Con heridos          Choque
## 16 2018-04-30T00:00:00.000    09:50:00:am        Con heridos          Choque
## 17 2018-05-03T00:00:00.000    09:18:00:pm        Con heridos          Choque
## 18 2018-05-14T00:00:00.000    05:45:00:am        Con heridos          Choque
## 19 2018-05-25T00:00:00.000    02:20:00:pm        Con heridos          Choque
## 20 2018-05-26T00:00:00.000    03:15:00:am        Con heridos          Choque
##    SITIO_EXACTO_ACCIDENTE CANT_HERIDOS_EN._SITIO_ACCIDENTE
## 1         CRA 58 CALLE 90                                5
## 2             CR 44 CL 51                                7
## 3             CR 46 CL 64                                8
## 4              CR 6 CL 90                                4
## 5   CIRCUNVALAR CR 38Y 46                                4
## 6     CALLE 76 CARRERA 47                                4
## 7            CLK 59 CR 45                                4
## 8    CALLE 13 CARRERA 99B                                4
## 9             CL 45 CR 38                                5
## 10    CALLE 96 CARRERA 3C                                4
## 11    CALLE 110 CARRERA 5                               11
## 12    CARRERA 43 CALLE 50                                4
## 13    CALLE 72 CARRERA 46                                7
## 14     CALLE 45 CARRERA 8                                5
## 15  CARRERA 12F CALLE 104                                5
## 16    CALLE 47 CARRERA 23                                4
## 17    CALLE 45 CARRERA 41                                8
## 18        CR 14 SUR CL 46                                8
## 19    CARRERA 18 CALLE 58                                4
## 20    CARRERA 46 CALLE 54                                6
##    CANT_MUERTOS_EN._SITIO_ACCIDENTE CANTIDAD_ACCIDENTES AÑO_ACCIDENTE
## 1                                NA                   1          2018
## 2                                NA                   1          2018
## 3                                NA                   1          2018
## 4                                NA                   1          2018
## 5                                NA                   1          2018
## 6                                NA                   1          2018
## 7                                NA                   1          2018
## 8                                NA                   1          2018
## 9                                NA                   1          2018
## 10                               NA                   1          2018
## 11                               NA                   1          2018
## 12                               NA                   1          2018
## 13                               NA                   1          2018
## 14                               NA                   1          2018
## 15                               NA                   1          2018
## 16                               NA                   1          2018
## 17                               NA                   1          2018
## 18                               NA                   1          2018
## 19                               NA                   1          2018
## 20                               NA                   1          2018
##    MES_ACCIDENTE DIA_ACCIDENTE
## 1        January           Sun
## 2        January           Thu
## 3        January           Mon
## 4        January           Thu
## 5        January           Fri
## 6       February           Fri
## 7       February           Sun
## 8       February           Wed
## 9          March           Tue
## 10         March           Tue
## 11         March           Wed
## 12         March           Thu
## 13         March           Tue
## 14         April           Fri
## 15         April           Sat
## 16         April           Mon
## 17           May           Thu
## 18           May           Mon
## 19           May           Fri
## 20           May           Sat
head(filter(DATOS, CANT_MUERTOS_EN._SITIO_ACCIDENTE > 2),20)
##  [1] FECHA_ACCIDENTE                  HORA_ACCIDENTE                  
##  [3] GRAVEDAD_ACCIDENTE               CLASE_ACCIDENTE                 
##  [5] SITIO_EXACTO_ACCIDENTE           CANT_HERIDOS_EN._SITIO_ACCIDENTE
##  [7] CANT_MUERTOS_EN._SITIO_ACCIDENTE CANTIDAD_ACCIDENTES             
##  [9] AÑO_ACCIDENTE                    MES_ACCIDENTE                   
## [11] DIA_ACCIDENTE                   
## <0 rows> (o 0- extensión row.names)
head(filter(DATOS, CANTIDAD_ACCIDENTES > 1), 20)
##           FECHA_ACCIDENTE HORA_ACCIDENTE GRAVEDAD_ACCIDENTE CLASE_ACCIDENTE
## 1 2018-06-09T00:00:00.000    09:35:00:am         Solo daños          Choque
## 2 2019-12-28T00:00:00.000    12:28:00:pm         Solo daños          Choque
## 3 2020-02-06T00:00:00.000    09:00:00:am         Solo daños          Choque
## 4 2020-05-02T00:00:00.000    07:40:00:pm         Solo daños          Choque
## 5 2020-11-05T00:00:00.000    05:25:00:pm         Solo daños          Choque
##   SITIO_EXACTO_ACCIDENTE CANT_HERIDOS_EN._SITIO_ACCIDENTE
## 1    CARRERA 38 CALLE 52                               NA
## 2            CR 38 CL 81                               NA
## 3   AV CIRCUNVALAR CR 27                               NA
## 4            CR 46 87 27                               NA
## 5           AV 110 CR 35                               NA
##   CANT_MUERTOS_EN._SITIO_ACCIDENTE CANTIDAD_ACCIDENTES AÑO_ACCIDENTE
## 1                               NA                   2          2018
## 2                               NA                   2          2019
## 3                               NA                   2          2020
## 4                               NA                   2          2020
## 5                               NA                   2          2020
##   MES_ACCIDENTE DIA_ACCIDENTE
## 1          June           Sat
## 2      December           Sat
## 3      February           Thu
## 4           May           Sat
## 5      November           Thu
DATOS$CANT_HERIDOS_EN._SITIO_ACCIDENTE[DATOS$CANT_HERIDOS_EN._SITIO_ACCIDENTE > 3] <- NA
DATOS$CANT_MUERTOS_EN._SITIO_ACCIDENTE[DATOS$CANT_MUERTOS_EN._SITIO_ACCIDENTE > 1] <- NA
DATOS$CANTIDAD_ACCIDENTES[DATOS$CANTIDAD_ACCIDENTES > 1] <- NA
par(mfrow=c(1,3))
boxplot(DATOS$CANT_HERIDOS_EN._SITIO_ACCIDENTE,main="CANT_HERIDOS_EN._SITIO_ACCIDENTE")  
boxplot(DATOS$CANT_MUERTOS_EN._SITIO_ACCIDENTE,main="CANT_MUERTOS_EN._SITIO_ACCIDENTE") 
boxplot(DATOS$CANTIDAD_ACCIDENTES,main="CANTIDAD_ACCIDENTES")

medianas <- apply(DATOS[, sapply(DATOS, is.numeric)], 2, median, na.rm = TRUE)

require(tidyr)
## Cargando paquete requerido: tidyr
reemplazos <- list(CANT_HERIDOS_EN._SITIO_ACCIDENTE = medianas[1], CANT_MUERTOS_EN._SITIO_ACCIDENTE = medianas[2], CANTIDAD_ACCIDENTES = medianas[3])
DATOS <- replace_na(DATOS, reemplazos)
summary(DATOS)
##  FECHA_ACCIDENTE    HORA_ACCIDENTE     GRAVEDAD_ACCIDENTE CLASE_ACCIDENTE   
##  Length:25610       Length:25610       Length:25610       Length:25610      
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##  SITIO_EXACTO_ACCIDENTE CANT_HERIDOS_EN._SITIO_ACCIDENTE
##  Length:25610           Min.   :1.000                   
##  Class :character       1st Qu.:1.000                   
##  Mode  :character       Median :1.000                   
##                         Mean   :1.126                   
##                         3rd Qu.:1.000                   
##                         Max.   :3.000                   
##  CANT_MUERTOS_EN._SITIO_ACCIDENTE CANTIDAD_ACCIDENTES AÑO_ACCIDENTE 
##  Min.   :1                        Min.   :1           Min.   :2018  
##  1st Qu.:1                        1st Qu.:1           1st Qu.:2019  
##  Median :1                        Median :1           Median :2020  
##  Mean   :1                        Mean   :1           Mean   :2020  
##  3rd Qu.:1                        3rd Qu.:1           3rd Qu.:2021  
##  Max.   :1                        Max.   :1           Max.   :2024  
##  MES_ACCIDENTE      DIA_ACCIDENTE     
##  Length:25610       Length:25610      
##  Class :character   Class :character  
##  Mode  :character   Mode  :character  
##                                       
##                                       
## 
suppressWarnings(missmap(DATOS))