Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 35 additions & 14 deletions R/checking_data.R
Original file line number Diff line number Diff line change
Expand Up @@ -938,28 +938,49 @@ get_results_tosferina <- function(report_data, results = "positivo",
return(data_grouped)
}

#' @title Obtener los tiempos epidemiologicos de los datos historicos





#' @title Obtener tiempos epidemiológicos de datos históricos
#'
#' @description
#' Transforma la tabla de la base de datos 'VIRUS RESPIRATORIOS 2022 A 2024'
#' para generar 2 tablas que facilitan las operaciones para las funciones de visualización.
#' Se crea una tabla con los datos adecuados para un gráfico de línea.
#' Se crea una tabla con las columnas adecuadas para un gráfico de barras apiladas.
#'
#' @param dataset_epi_times Data frame con datos históricos que incluyen las columnas
#' `ano`, `periodo_epidemiologico`, `de_positividad` y las de distintos tipos de virus.
#'
#' @return Una lista con dos data frames:
#' - `stacked_data`: Datos en formato largo con tipo de virus y número de casos por semana.
#' - `line_data`: Serie de tiempo con la positividad semanal.
#'
#' @export
get_historic_epi_times <- function(tabla) {
data <- tabla
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please avoid using data since it is a reserved word in R and in other packages.

stacked_data <- data %>%
get_historic_epi_times <- function(dataset_epi_times) {
dataset <- dataset_epi_times
stacked_dataset <- dataset %>%
tidyr::pivot_longer(cols = .data$a_h1n1_pdm09:.data$otros_virus,
names_to = "Virus_Type",
values_to = "Cases") %>%
names_to = "Virus_Type",
values_to = "Cases") %>%
dplyr::mutate(YearWeek = paste(.data$ano,
sprintf("%02d",
.data$periodo_epidemiologico),
sep = "-"))
# Prepare line data for the line chart, ensuring YearWeek is created consistently
line_data <- data %>%
# Prepare line dataset for the line chart, ensuring YearWeek is created consistently
line_dataset <- dataset %>%
dplyr::mutate(YearWeek = paste(.data$ano, sprintf("%02d",
.data$periodo_epidemiologico),
sep = "-")) %>%
.data$periodo_epidemiologico),
sep = "-")) %>%
dplyr::select(.data$YearWeek, Percent_Positivity =
.data$de_positividad) %>%
.data$percent_de_positividad) %>%
tidyr::drop_na(.data$Percent_Positivity) # Remove any NA values in Percent_Positivity

historic_data <- list(stacked_data = stacked_data,
line_data = line_data)
return(historic_data)
historic_dataset <- list(stacked_dataset = stacked_dataset,
line_dataset = line_dataset)
return(historic_dataset)
}


101 changes: 81 additions & 20 deletions R/cleaning_data.R
Original file line number Diff line number Diff line change
Expand Up @@ -156,38 +156,99 @@ clean_tosferina_data <- function(report_data) {
return(report_data)
}

#' @title Función para reemplazar espacios en los nombres de las columnas con
#' guiones bajos


















#' @title Limpiar espacios en los nombres de las columnas
#'
#' @description
#' Reemplaza los espacios y caracteres especiales en los nombres de las columnas
#' por guiones bajos, asegurando una nomenclatura estandarizada.
#'
#' @param dataset Un dataset con nombres de columna a limpiar.
#' @return Un dataset con nombres de columna estandarizados.
#' @export
clean_colnames_spaces <- function(df) {
colnames(df) <- epitrix::clean_labels(colnames(df))
return(df)
clean_colnames_spaces <- function(dataset) {
colnames(dataset) <- epitrix::clean_labels(colnames(dataset))
return(dataset)
}

#' @title Función que remueve los sufijos
#' @title Eliminar sufijos numéricos en los nombres de las columnas
#'
#' @description
#' Remueve los sufijos numéricos en los nombres de las columnas que siguen el
#' formato `...1`, `...2`, `...3`, común en datos importados desde archivos CSV o Excel.
#'
#' @param dataset Un dataset con nombres de columna que pueden contener sufijos numéricos.
#' @return Un dataset con nombres de columna sin sufijos numéricos.
#' @export
clean_colnames_suffixes <- function(df) {
colnames(df) <- gsub("\\.\\.\\.[0-9]+$", "", colnames(df))
return(df)
clean_colnames_suffixes <- function(dataset) {
colnames(dataset) <- gsub("\\.\\.\\.[0-9]+$", "", colnames(dataset))
return(dataset)
}

#' @title Función que rellena los años

#' @title Rellenar valores faltantes en una columna
#'
#' @description
#' Usa `tidyr::fill()` para rellenar los valores faltantes en la columna especificada,
#' propagando los valores hacia abajo.
#'
#' @param dataset Un dataset que contiene la columna a rellenar.
#' @param column_name Nombre de la columna a rellenar (como variable sin comillas).
#' @return Un dataset con los valores de la columna completados.
#' @export
fill_down_year <- function(df, column_name) {
df <- df %>%
fill_down_column <- function(dataset, column_name) {
dataset <- dataset %>%
tidyr::fill({{ column_name }}, .direction = "down")

# Devolver el data frame limpio
return(df)
return(dataset)
}

#' @title Función que limpia la información historica
#' @title Limpiar datos históricos epidemiológicos
#'
#' @description
#' Aplica varias transformaciones al dataset de datos históricos:
#' - Remueve sufijos en nombres de columnas (`clean_colnames_suffixes`).
#' - Estandariza los nombres de las columnas (`janitor::clean_names`).
#' - Rellena valores faltantes en las columnas `ano` y `periodo_epidemiologico` (`fill_down_column`).
#'
#' @param dataset Un dataset con datos históricos sin procesar.
#' @return Un dataset limpio y listo para análisis.
#' @export
clean_historic_data <- function(tabla) {
tabla <- tabla %>%
clean_historic_data <- function(dataset) {

#get texts of the axis from config.yml
config_path <- system.file("extdata", "config.yml", package = "labrep")
config_path <- "C:/Users/willi/GITHUB/labrep/inst/extdata/config.yml"

year_column <- config::get(file = config_path,"respiratory_viruses_historic_data")$year
col_year <- year_column$col_name
periodo_epidemiologico <- config::get(file = config_path,"respiratory_viruses_historic_data")$periodo_epidemiologico
col_periodo <- periodo_epidemiologico$col_name

dataset <- dataset %>%
clean_colnames_suffixes() %>%
clean_colnames_spaces() %>%
fill_down_year("ano") %>%
slice(1:32)
return(tabla)
janitor::clean_names() %>%
fill_down_column(col_year) %>%
fill_down_column(col_periodo)

return(dataset)

}
41 changes: 34 additions & 7 deletions R/import_data.R
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,23 @@ import_data_viral_circulation <- function(report_data = NULL,
return(viral_circulation_data)
}

#' @title Obtener todas las tables de las bases historicas
#' @title Extraer todas las tablas de una hoja de Excel
#'
#' @description
#' Detecta y extrae múltiples tablas dentro de una hoja de Excel, identificando
#' separaciones mediante filas y columnas en blanco.
#'
#' @param file_name Ruta del archivo de Excel.
#'
#' @return Lista de dataframes, donde cada elemento representa una tabla identificada dentro de la hoja.
#' @export
get_all_tables <- function(file_name, sheet_name) {
get_all_tables <- function(file_name) {

config_path <- system.file("extdata", "config.yml", package = "labrep")
sheet_name <- config::get(file = config_path,"respiratory_viruses_historic_data")$excel_sheet_name
sheet_name <- sheet_name$value


# Leer los datos de la hoja especificada en el archivo
data <- readxl::read_excel(file_name, sheet = sheet_name)

Expand Down Expand Up @@ -76,21 +90,34 @@ get_all_tables <- function(file_name, sheet_name) {
return(tables)
}

#' @title Extraer una tabla específica de la lista y devolverla como data.frame
#' @title Obtener una tabla específica de una lista de tablas
#'
#' @description
#' Extrae una tabla de una lista de tablas generada a partir de `get_all_tables`,
#' seleccionándola por su índice en la lista.
#'
#' @param list_of_tables Lista de tablas, donde cada elemento es un dataframe.
#'
#' @return Un dataframe correspondiente a la tabla seleccionada.
#' @export
get_selected_table <- function(tables, INDICADOR) {
get_selected_table <- function(list_tables) {

config_path <- system.file("extdata", "config.yml", package = "labrep")
indicator <- config::get(file = config_path,"respiratory_viruses_historic_data")$table_number
indicator <- indicator$value

# Verificar que 'tables' es una lista
if (!is.list(tables)) {
if (!is.list(list_tables)) {
stop("El argumento 'tables' debe ser una lista de tablas.")
}

# Verificar que el INDICADOR es válido
if (INDICADOR < 1 || INDICADOR > length(tables)) {
if (indicator < 1 || indicator > length(list_tables)) {
stop("El INDICADOR está fuera del rango de las tablas disponibles.")
}

# Extraer la tabla especificada
selected_table <- tables[[INDICADOR]]
selected_table <- list_tables[[indicator]]

# Asegurarse de que la tabla es un data.frame o convertirla en uno si es necesario
if (!is.data.frame(selected_table)) {
Expand Down
Loading
Loading