library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.4.3
## Warning: package 'ggplot2' was built under R version 4.4.2
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(janitor)
## Warning: package 'janitor' was built under R version 4.4.3
##
## Adjuntando el paquete: 'janitor'
##
## The following objects are masked from 'package:stats':
##
## chisq.test, fisher.test
library(skimr)
## Warning: package 'skimr' was built under R version 4.4.2
library(lubridate)
library(ggplot2)
library(corrplot)
## Warning: package 'corrplot' was built under R version 4.4.3
## corrplot 0.95 loaded
library(readr)
covid <- read_csv("D:/Usuario windows/Downloads/covid_colombia.csv")
## Warning: One or more parsing issues, call `problems()` on your data frame for details,
## e.g.:
## dat <- vroom(...)
## problems(dat)
## Rows: 141072 Columns: 23
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (10): ID de caso, Nombre departamento, Nombre municipio, Sexo, Tipo de ...
## dbl (5): Código DIVIPOLA departamento, Código DIVIPOLA municipio, Edad, Un...
## lgl (2): Código ISO del país, Nombre del país
## dttm (6): fecha reporte web, Fecha de notificación, Fecha de inicio de sínt...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
covid<- clean_names(covid)
glimpse(covid)
## Rows: 141,072
## Columns: 23
## $ fecha_reporte_web <dttm> 2021-01-13, 2020-07-18, 2020-09-23, 2020…
## $ id_de_caso <chr> "1.830.848", "186.958", "781.861", "187.6…
## $ fecha_de_notificacion <dttm> 2020-12-27, 2020-06-30, 2020-09-11, 2020…
## $ codigo_divipola_departamento <dbl> 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,…
## $ nombre_departamento <chr> "ATLANTICO", "ATLANTICO", "ATLANTICO", "A…
## $ codigo_divipola_municipio <dbl> 8.758, 8.758, 8.758, 8.634, 8.758, 8.573,…
## $ nombre_municipio <chr> "SOLEDAD", "SOLEDAD", "SOLEDAD", "SABANAG…
## $ edad <dbl> 75, 52, 80, 21, 15, 5, 8, 58, 26, 22, 33,…
## $ unidad_de_medida_de_edad <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ sexo <chr> "M", "F", "F", "F", "F", "F", "M", "F", "…
## $ tipo_de_contagio <chr> "Comunitaria", "Comunitaria", "Comunitari…
## $ ubicacion_del_caso <chr> "Casa", "Casa", "Casa", "Casa", "Casa", "…
## $ estado <chr> "Leve", "Leve", "Leve", "Leve", "Leve", "…
## $ codigo_iso_del_pais <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ nombre_del_pais <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ recuperado <chr> "Recuperado", "Recuperado", "Recuperado",…
## $ fecha_de_inicio_de_sintomas <dttm> 2020-12-25, 2020-06-28, 2020-09-09, 2020…
## $ fecha_de_muerte <dttm> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ fecha_de_diagnostico <dttm> 2021-01-07, 2020-07-11, 2020-09-22, 2020…
## $ fecha_de_recuperacion <dttm> 2021-01-14, 2020-07-27, 2020-09-28, 2020…
## $ tipo_de_recuperacion <chr> "Tiempo", "Tiempo", "Tiempo", "PCR", "PCR…
## $ pertenencia_etnica <dbl> 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,…
## $ nombre_del_grupo_etnico <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
View(covid)
dim(covid)
## [1] 141072 23
str(covid)
## spc_tbl_ [141,072 × 23] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ fecha_reporte_web : POSIXct[1:141072], format: "2021-01-13" "2020-07-18" ...
## $ id_de_caso : chr [1:141072] "1.830.848" "186.958" "781.861" "187.670" ...
## $ fecha_de_notificacion : POSIXct[1:141072], format: "2020-12-27" "2020-06-30" ...
## $ codigo_divipola_departamento: num [1:141072] 8 8 8 8 8 8 8 8 8 8 ...
## $ nombre_departamento : chr [1:141072] "ATLANTICO" "ATLANTICO" "ATLANTICO" "ATLANTICO" ...
## $ codigo_divipola_municipio : num [1:141072] 8.76 8.76 8.76 8.63 8.76 ...
## $ nombre_municipio : chr [1:141072] "SOLEDAD" "SOLEDAD" "SOLEDAD" "SABANAGRANDE" ...
## $ edad : num [1:141072] 75 52 80 21 15 5 8 58 26 22 ...
## $ unidad_de_medida_de_edad : num [1:141072] 1 1 1 1 1 1 1 1 1 1 ...
## $ sexo : chr [1:141072] "M" "F" "F" "F" ...
## $ tipo_de_contagio : chr [1:141072] "Comunitaria" "Comunitaria" "Comunitaria" "Comunitaria" ...
## $ ubicacion_del_caso : chr [1:141072] "Casa" "Casa" "Casa" "Casa" ...
## $ estado : chr [1:141072] "Leve" "Leve" "Leve" "Leve" ...
## $ codigo_iso_del_pais : logi [1:141072] NA NA NA NA NA NA ...
## $ nombre_del_pais : logi [1:141072] NA NA NA NA NA NA ...
## $ recuperado : chr [1:141072] "Recuperado" "Recuperado" "Recuperado" "Recuperado" ...
## $ fecha_de_inicio_de_sintomas : POSIXct[1:141072], format: "2020-12-25" "2020-06-28" ...
## $ fecha_de_muerte : POSIXct[1:141072], format: NA NA ...
## $ fecha_de_diagnostico : POSIXct[1:141072], format: "2021-01-07" "2020-07-11" ...
## $ fecha_de_recuperacion : POSIXct[1:141072], format: "2021-01-14" "2020-07-27" ...
## $ tipo_de_recuperacion : chr [1:141072] "Tiempo" "Tiempo" "Tiempo" "PCR" ...
## $ pertenencia_etnica : num [1:141072] 6 6 6 6 6 6 6 6 6 6 ...
## $ nombre_del_grupo_etnico : chr [1:141072] NA NA NA NA ...
## - attr(*, "spec")=
## .. cols(
## .. `fecha reporte web` = col_datetime(format = ""),
## .. `ID de caso` = col_character(),
## .. `Fecha de notificación` = col_datetime(format = ""),
## .. `Código DIVIPOLA departamento` = col_double(),
## .. `Nombre departamento` = col_character(),
## .. `Código DIVIPOLA municipio` = col_double(),
## .. `Nombre municipio` = col_character(),
## .. Edad = col_double(),
## .. `Unidad de medida de edad` = col_double(),
## .. Sexo = col_character(),
## .. `Tipo de contagio` = col_character(),
## .. `Ubicación del caso` = col_character(),
## .. Estado = col_character(),
## .. `Código ISO del país` = col_logical(),
## .. `Nombre del país` = col_logical(),
## .. Recuperado = col_character(),
## .. `Fecha de inicio de síntomas` = col_datetime(format = ""),
## .. `Fecha de muerte` = col_datetime(format = ""),
## .. `Fecha de diagnóstico` = col_datetime(format = ""),
## .. `Fecha de recuperación` = col_datetime(format = ""),
## .. `Tipo de recuperación` = col_character(),
## .. `Pertenencia étnica` = col_double(),
## .. `Nombre del grupo étnico` = col_character()
## .. )
## - attr(*, "problems")=<externalptr>
summary(covid)
## fecha_reporte_web id_de_caso
## Min. :2020-03-25 00:00:00.00 Length:141072
## 1st Qu.:2020-12-20 00:00:00.00 Class :character
## Median :2021-04-15 00:00:00.00 Mode :character
## Mean :2021-04-04 06:50:10.81
## 3rd Qu.:2021-06-27 00:00:00.00
## Max. :2024-01-17 00:00:00.00
##
## fecha_de_notificacion codigo_divipola_departamento
## Min. :2020-03-20 00:00:00.00 Min. :8
## 1st Qu.:2020-12-11 00:00:00.00 1st Qu.:8
## Median :2021-04-05 00:00:00.00 Median :8
## Mean :2021-03-24 16:52:37.80 Mean :8
## 3rd Qu.:2021-06-15 00:00:00.00 3rd Qu.:8
## Max. :2024-01-12 00:00:00.00 Max. :8
##
## nombre_departamento codigo_divipola_municipio nombre_municipio
## Length:141072 Min. :8.078 Length:141072
## Class :character 1st Qu.:8.520 Class :character
## Mode :character Median :8.758 Mode :character
## Mean :8.607
## 3rd Qu.:8.758
## Max. :8.849
##
## edad unidad_de_medida_de_edad sexo
## Min. : 1.00 Min. :1.000 Length:141072
## 1st Qu.: 25.00 1st Qu.:1.000 Class :character
## Median : 37.00 Median :1.000 Mode :character
## Mean : 39.35 Mean :1.006
## 3rd Qu.: 53.00 3rd Qu.:1.000
## Max. :105.00 Max. :3.000
##
## tipo_de_contagio ubicacion_del_caso estado codigo_iso_del_pais
## Length:141072 Length:141072 Length:141072 Mode:logical
## Class :character Class :character Class :character NA's:141072
## Mode :character Mode :character Mode :character
##
##
##
##
## nombre_del_pais recuperado fecha_de_inicio_de_sintomas
## Mode:logical Length:141072 Min. :2020-03-03 00:00:00.00
## NA's:141072 Class :character 1st Qu.:2020-12-14 00:00:00.00
## Mode :character Median :2021-04-02 00:00:00.00
## Mean :2021-03-24 11:57:51.41
## 3rd Qu.:2021-06-13 00:00:00.00
## Max. :2024-01-11 00:00:00.00
## NA's :1988
## fecha_de_muerte fecha_de_diagnostico
## Min. :2020-03-27 00:00:00.00 Min. :2020-03-25 00:00:00.00
## 1st Qu.:2020-08-03 00:00:00.00 1st Qu.:2020-12-18 00:00:00.00
## Median :2021-04-09 00:00:00.00 Median :2021-04-12 00:00:00.00
## Mean :2021-03-02 18:14:46.64 Mean :2021-04-01 07:03:40.98
## 3rd Qu.:2021-05-16 00:00:00.00 3rd Qu.:2021-06-23 00:00:00.00
## Max. :2023-11-06 00:00:00.00 Max. :2024-01-13 00:00:00.00
## NA's :135883 NA's :414
## fecha_de_recuperacion tipo_de_recuperacion pertenencia_etnica
## Min. :2020-04-02 00:00:00.00 Length:141072 Min. :1.000
## 1st Qu.:2021-01-05 00:00:00.00 Class :character 1st Qu.:6.000
## Median :2021-04-21 00:00:00.00 Mode :character Median :6.000
## Mean :2021-04-17 02:49:48.73 Mean :5.812
## 3rd Qu.:2021-07-05 00:00:00.00 3rd Qu.:6.000
## Max. :2024-01-17 00:00:00.00 Max. :6.000
## NA's :5062 NA's :18
## nombre_del_grupo_etnico
## Length:141072
## Class :character
## Mode :character
##
##
##
##
faltantes <- data.frame(
conteo = colSums(is.na(covid)),
porcentaje = round(colMeans(is.na(covid))*100,2)
)
faltantes %>% arrange(desc(conteo))
## conteo porcentaje
## codigo_iso_del_pais 141072 100.00
## nombre_del_pais 141072 100.00
## nombre_del_grupo_etnico 136849 97.01
## fecha_de_muerte 135883 96.32
## fecha_de_recuperacion 5062 3.59
## tipo_de_recuperacion 5062 3.59
## fecha_de_inicio_de_sintomas 1988 1.41
## fecha_de_diagnostico 414 0.29
## pertenencia_etnica 18 0.01
## fecha_reporte_web 0 0.00
## id_de_caso 0 0.00
## fecha_de_notificacion 0 0.00
## codigo_divipola_departamento 0 0.00
## nombre_departamento 0 0.00
## codigo_divipola_municipio 0 0.00
## nombre_municipio 0 0.00
## edad 0 0.00
## unidad_de_medida_de_edad 0 0.00
## sexo 0 0.00
## tipo_de_contagio 0 0.00
## ubicacion_del_caso 0 0.00
## estado 0 0.00
## recuperado 0 0.00
ggplot(covid, aes(x=edad)) +
geom_histogram(bins=40) +
theme_minimal() +
labs(title="Distribución de edad")

ggplot(covid, aes(y=edad)) +
geom_boxplot() +
theme_minimal() +
labs(title="Boxplot edad")

covid <- covid %>%
mutate(fecha_de_inicio_de_sintomas = dmy(fecha_de_recuperacion))
## Warning: There was 1 warning in `mutate()`.
## ℹ In argument: `fecha_de_inicio_de_sintomas = dmy(fecha_de_recuperacion)`.
## Caused by warning:
## ! All formats failed to parse. No formats found.
casos_tiempo <- covid %>%
count(fecha_de_recuperacion)
ggplot(casos_tiempo, aes(x=fecha_de_recuperacion, y=n)) +
geom_line() +
theme_minimal() +
labs(title="Casos en el tiempo")
## Warning: Removed 1 row containing missing values or values outside the scale range
## (`geom_line()`).

top_deptos <- covid %>%
count(nombre_municipio) %>%
arrange(desc(n)) %>%
slice(1:12)
ggplot(top_deptos, aes(x=reorder(nombre_municipio,n), y=n)) +
geom_col() +
coord_flip() +
theme_minimal() +
labs(title="Top departamentos")

num_vars <- covid %>% select(where(is.numeric))
corr_matrix <- cor(num_vars, use="complete.obs")
## Warning in cor(num_vars, use = "complete.obs"): La desviación estándar es cero
corrplot(corr_matrix, method="color")
