install.packages(“readr”) install.packages(“dplyr”) install.packages(“Amelia”) install.packages(“Rcpp”) install.packages(“tidyr”) install.packages(“ggplot2”)
library(readr) library(dplyr)
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:
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.
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.
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
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))
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()
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()
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()
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))
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())
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
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
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, ]))
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))