###### CARGUE DE SERIES DE PRECIPITACIÓN E IMPUTACIÓN DE VALORES FALTANTES CON IDW

#---- 1. LIBRERÍAS ----
library(data.table)
library(dplyr)
library(gstat)
library(tidyr)
library(sp)
library(stringr)
library(writexl)
library(readxl)
library(forecast)
library(GGally)
library(xts)
library(zoo)
library(modeltime)

#---- 2. LIMPIEZA DE MEMORIA ----
rm(list = ls())
gc()
options(scipen = 999)

#---- 3. CARGUE DE SERIES DE TIEMPO Y AJUSTE A SERIES MENSUALES ----


# Ruta con los excel de las series de tiempo de precipitación completados mediante IDW
ruta <- "D:/guvelez/Personales/Otros/Scripts/DATOS_COMPLETOS_DIARIOS"
all_files <- list.files(path = ruta, pattern = "\\.xlsx$", full.names = TRUE)


# Lectura de bases de datos de precipitación diarias
rainfall_series <- data.frame()
i <- 1
for(file in all_files){
  df <- read_xlsx(file)
  #df$FECHALECTURA <- as.Date(df$FECHALECTURA, format = "%d/%m/%Y")
  #df <- df[!duplicated(df$FECHALECTURA) & !(is.na(df$FECHALECTURA) & duplicated(df$FECHALECTURA)), ]
  
  # Creación de objeto xts
  df_xts <- xts(df$PRECIPITACION,
                df$FECHALECTURA)
  
  # Conversión de datos diarios a precipitación total mensual
  df_xts_mth <- apply.monthly(df_xts, sum)
  #df_xts_mth <- apply.monthly(df_xts, colMeans)
  
  # Conversion a dataframe
  df_mth <- as.data.frame(df_xts_mth)
  df_mth$FECHALECTURA <- rownames(df_mth)
  names(df_mth)[1] <- paste0("E",i)
  df_mth <- df_mth %>% select(FECHALECTURA, everything())
  
  if(i == 1) {
    rainfall_series <- df_mth
  } else {
    rainfall_series <- merge(rainfall_series, df_mth, by = "FECHALECTURA")
  }
  i <- i + 1
  
}

# Se guardan las series completas como archivos separados de Excel
for(i in 1:56){
  serie <- rainfall_series[,c(1,i+1)]
  names(serie)[2] <- "PRECIPITACION"
  ruta <- str_replace(all_files[i], "DATOS_COMPLETOS_DIARIOS", "DATOS_COMPLETOS_MENSUALES")
  write_xlsx(serie, ruta)
}

write.csv(rainfall_series, "D:/guvelez/Personales/Otros/Scripts/series_completas.csv")
