library(tidyverse)
library(aweek)
library(lubridate)
Cargaremos 3 bases de datos, la primera que contiene los datos climáticos a nivel diario, una base de datos con los ubigeos con su respectivo distrito y la data de salud creada en la clase anterior
base_clima<-readRDS(file = "data_cruda/clima_LAMBAYEQUE.rds")
ubigeo<-readRDS("data_cruda/ubigeo.rds")
dengue_provincia_lamb<-readRDS(file="data_cruda/dengue_provincia_lamb.rds")
glimpse(base_clima)
## Rows: 166,554
## Columns: 6
## $ fecha <date> 2009-01-01, 2009-01-02, 2009-01-03, 2009-01-04, 2009-01-05, 20~
## $ tmax <dbl> 28.06553, 28.63317, 27.19461, 28.43742, 27.83677, 27.73350, 29.~
## $ tmin <dbl> 20.48385, 21.00019, 20.88745, 20.74758, 21.59562, 20.96686, 21.~
## $ tmean <dbl> 23.19459, 23.64539, 23.12889, 23.66436, 23.70907, 23.59359, 24.~
## $ pp <dbl> 0.0000000000, 0.0007689828, 0.1818108777, 0.0283333037, 0.01312~
## $ ubigeo <chr> "140101", "140101", "140101", "140101", "140101", "140101", "14~
Vemos que es data diaria, y para la ubicacion solo contamos con el valor de ubigeo,por eso, vamos a unir los valores de departamento, provincia y distrito de la base de ubigeo
base_clima<-base_clima %>%
left_join(ubigeo,by="ubigeo")
Al hacer la union con el comando left_join nos damos cuenta que las columnas de departamento, provincia y distrito se encuentran en minuscula y en la data de salud estos estan en mayuscula, por lo que usamos el comando toupper para covertir todo a mayusculas.
base_clima<-base_clima %>%
mutate(departamento=toupper(departamento),
provincia=toupper(provincia),
distrito=toupper(distrito)) %>%
select(-poblacion,-superficie)
Tenemos que igualar en espacio y tiempo de la data de clima a la data de dengue que esta a nivel de provincias y semanas epidemeologias. Primero calcularemos promedios a nivel de semana epimedemeologica, para lo cual usaremos la funcion date2week de la libreria aweek para obtener la semana epidemeologia, con ese valor agruparemos los dias de la semana y calcularemos los promedios de las variables .
base_clima_sem<-base_clima %>%
mutate(fechaepi=date2week(fecha,week_start = 7,floor_day = T))
base_clima_sem<-base_clima_sem %>%
group_by(fechaepi,departamento,provincia,distrito) %>%
summarise(tmax_sem=mean(tmax,na.rm = T),
tmin_sem=mean(tmin,na.rm = T),
tmean_sem=mean(tmean,na.rm = T),
pp_sem=sum(pp,na.rm = T)) %>%
ungroup()
Ahora agrupamos segun provincias y calculamos promedios de las variables.
base_clima_sem_prov<-base_clima_sem %>%
group_by(fechaepi,departamento,provincia) %>%
summarise(tmax_sem_prov=mean(tmax_sem,na.rm = T),
tmin_sem_prov=mean(tmin_sem,na.rm = T),
tmean_sem_prov=mean(tmean_sem,na.rm = T),
pp_sem_prov=mean(pp_sem,na.rm = T)) %>%
ungroup()
Tenemos que unir los datos de dengue de ‘dengue_provincia_lamb’ con los datos climaticos de ‘base_clima_sem_prov’, para lo cual usaremos el comando left_join.
salud_clima_lamb<-dengue_provincia_lamb %>%
left_join(base_clima_sem_prov,by=c("fechaepi","provincia","departamento"))
Finalmente, ordenamos la base de datos y agregamos una columna con la fecha en formato date.
salud_clima_lamb<-salud_clima_lamb %>%
mutate(fecha=week2date(fechaepi)) %>%
relocate(fechaepi,fecha,ano,semana,departamento,provincia,casos,
tmax_sem_prov,tmin_sem_prov,tmean_sem_prov,pp_sem_prov)