diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index 4f305aae..62b0eff0 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -1,13 +1,49 @@ # Workflow derived from https://github.com/r-lib/actions/tree/v2/examples # Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help +# +# Reproduce locally by running: +# ```r +# pak::pak(c("any::rcmdcheck", "."), dependencies = "Config/Needs/check") +# rcmdcheck::rcmdcheck() +# ``` on: push: branches: [main, master] + paths: + - 'data/**' + - 'R/**' + - 'inst/**' + - 'man/**' + - 'src/**' + - 'tests/**' + - 'vignettes/**' + - 'DESCRIPTION' + - 'NAMESPACE' + - 'LICENSE' + - '.Rbuildignore' + - '.github/workflows/R-CMD-check.yaml' + merge_group: pull_request: - branches: [main, master] + paths: + - 'data/**' + - 'R/**' + - 'inst/**' + - 'man/**' + - 'src/**' + - 'tests/**' + - 'vignettes/**' + - 'DESCRIPTION' + - 'NAMESPACE' + - 'LICENSE' + - '.Rbuildignore' + - '.github/workflows/R-CMD-check.yaml' name: R-CMD-check +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: R-CMD-check: runs-on: ${{ matrix.config.os }} @@ -29,13 +65,7 @@ jobs: R_KEEP_PKG_SOURCE: yes steps: - - name: Remove Microsoft repository configuration - if: runner.os == 'ubuntu-latest' - run: | - sudo rm /etc/apt/sources.list.d/microsoft-prod.list - sudo apt-get update - - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - uses: r-lib/actions/setup-pandoc@v2 @@ -51,5 +81,14 @@ jobs: needs: check - uses: r-lib/actions/check-r-package@v2 + id: rcmdcheck with: upload-snapshots: true + error-on: '"note"' + + # fail-fast but only if rcmdcheck step fails + - name: Manual fail-fast + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + if: always() && steps.rcmdcheck.outcome == 'failure' + run: gh run cancel ${{ github.run_id }} diff --git a/.github/workflows/dependency-change.yaml b/.github/workflows/dependency-change.yaml new file mode 100644 index 00000000..ef26e664 --- /dev/null +++ b/.github/workflows/dependency-change.yaml @@ -0,0 +1,82 @@ +# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples +# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help +on: + pull_request: + paths: + - 'DESCRIPTION' + +name: Analyze dependency changes + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +permissions: + pull-requests: write + +jobs: + dependency-changes: + runs-on: ubuntu-latest + env: + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + steps: + - name: Setup R + uses: r-lib/actions/setup-r@v2 + with: + use-public-rspm: true + + - name: Install dependencies + uses: r-lib/actions/setup-r-dependencies@v2 + with: + packages: any::pak, glue, gh + + - name: Analyze dependency changes + shell: Rscript {0} + run: | + deps_base <- pak::pkg_deps("${{ github.repository }}@${{ github.base_ref }}", dependencies = TRUE) |> + subset(!directpkg) |> + subset(is.na(priority)) + # We install from PR number rather than branch to deal with the case + # of PR coming from forks + deps_head <- pak::pkg_deps("${{ github.repository }}#${{ github.event.number }}", dependencies = TRUE) |> + subset(!directpkg) |> + subset(is.na(priority)) + + deps_added <- deps_head |> + subset(!ref %in% deps_base$ref) + + deps_removed <- deps_base |> + subset(!ref %in% deps_head$ref) + + if (nrow(deps_added) + nrow(deps_removed) > 0) { + + message("Dependencies have changed! Analyzing...") + + if (nrow(deps_added) > 0) { + nudge <- "Reach out on slack (`#code-review` or `#help` channels) to double check if there are base R alternatives to the new dependencies.\n" + } else { + nudge <- "" + } + + msg <- glue::glue( + .sep = "\n", + "This pull request:", + "- Adds {nrow(deps_added)} new dependencies (direct and indirect)", + "- Adds {length(unique(deps_added$sysreqs))} new system dependencies", + "- Removes {nrow(deps_removed)} existing dependencies (direct and indirect)", + "- Removes {length(unique(deps_removed$sysreqs))} existing system dependencies", + "", + nudge, + "(Note that results may be inaccurate if you branched from an outdated version of the target branch.)" + ) + + message("Posting results as a pull request comment.") + + gh::gh( + "POST /repos/{repo}/issues/{issue_number}/comments", + repo = "${{ github.repository }}", + issue_number = "${{ github.event.number }}", + body = msg + ) + + } diff --git a/.github/workflows/lint-changed-files.yaml b/.github/workflows/lint-changed-files.yaml index 4023b022..cf5c34b6 100644 --- a/.github/workflows/lint-changed-files.yaml +++ b/.github/workflows/lint-changed-files.yaml @@ -22,7 +22,7 @@ jobs: env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: r-lib/actions/setup-r@v2 with: @@ -34,6 +34,7 @@ jobs: any::gh any::lintr any::purrr + any::cyclocomp epiverse-trace/etdev needs: check diff --git a/.github/workflows/pkgdown.yaml b/.github/workflows/pkgdown.yaml index 82c72e58..ade8eb37 100644 --- a/.github/workflows/pkgdown.yaml +++ b/.github/workflows/pkgdown.yaml @@ -45,15 +45,16 @@ concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true +permissions: + contents: write + jobs: pkgdown: runs-on: ubuntu-latest env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} - permissions: - contents: write steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: r-lib/actions/setup-pandoc@v2 @@ -72,7 +73,7 @@ jobs: - name: Deploy to GitHub pages 馃殌 if: github.event_name != 'merge_group' && github.event_name != 'pull_request' - uses: JamesIves/github-pages-deploy-action@4.1.4 + uses: JamesIves/github-pages-deploy-action@v4.6.1 with: # We clean on releases because we want to remove old vignettes, # figures, etc. that have been deleted from the `main` branch. diff --git a/.github/workflows/render_readme.yml b/.github/workflows/render_readme.yml new file mode 100644 index 00000000..10f5eaad --- /dev/null +++ b/.github/workflows/render_readme.yml @@ -0,0 +1,96 @@ +# Reproduce locally by running: +# ```r +# pak::pak(c("any::rmarkdown", "any::usethis", ".")) +# writeLines( +# knitr::knit_expand( +# "README.Rmd", +# packagename = read.dcf("DESCRIPTION", "Package"), +# gh_repo = usethis:::github_remote_list()$repo_spec +# ), +# "README_expanded.Rmd" +# ) +# rmarkdown::render( +# "README_expanded.Rmd", +# output_file = "README.md", +# output_dir = "." +# ) +# unlink("README_expanded.Rmd") +# ``` +name: render-readme + +# Controls when the action will run. Triggers include: +# +# - button trigger from github action page +# - on changes to readme.Rmd + +on: + workflow_dispatch: + push: + branches: + # This may seem like a no-op but it prevents triggering on tags + # We use '**' rather '*' to accomodate names like 'dev/branch-1' + - '**' + paths: + - 'README.Rmd' + - '.github/workflows/render_readme.yml' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +permissions: + contents: write + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + render-readme: + runs-on: ubuntu-latest + env: + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + steps: + - name: Checkout repos + uses: actions/checkout@v4 + + - name: Setup R + uses: r-lib/actions/setup-r@v2 + with: + use-public-rspm: true + + - name: Setup pandoc + uses: r-lib/actions/setup-pandoc@v2 + + - name: Install dependencies + uses: r-lib/actions/setup-r-dependencies@v2 + with: + extra-packages: any::rmarkdown, local::. + + - name: Compile the readme + run: | + writeLines( + knitr::knit_expand( + "README.Rmd", + packagename = read.dcf("DESCRIPTION", "Package"), + gh_repo = Sys.getenv("GITHUB_REPOSITORY") + ), + "README_expanded.Rmd" + ) + rmarkdown::render( + "README_expanded.Rmd", + output_file = "README.md", + output_dir = "." + ) + shell: Rscript {0} + + - name: Commit files + run: | + git config --local user.email "action@github.com" + git config --local user.name "GitHub Action" + git add README.md + # Also add README figures if they exist + if [ -d man/figures ] + then + git add man/figures/ + fi + git diff-index --quiet HEAD || git commit -m "Automatic readme update" + git pull --rebase origin ${{ github.ref.name }} + git push origin || echo "No changes to push" diff --git a/.github/workflows/test-coverage.yaml b/.github/workflows/test-coverage.yaml index e1b821d2..afd8f041 100644 --- a/.github/workflows/test-coverage.yaml +++ b/.github/workflows/test-coverage.yaml @@ -1,13 +1,39 @@ # Workflow derived from https://github.com/r-lib/actions/tree/v2/examples # Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help +# +# Reproduce locally by running: +# ```r +# pak::pak("any::covr", dependencies = "Config/Needs/coverage") +# covr::codecov(quiet = FALSE) +# ``` on: push: branches: [main, master] + paths: + - 'R/**' + - 'src/**' + - 'tests/**' + - 'inst/**' + - 'DESCRIPTION' + - '.github/workflows/test-coverage.yaml' + merge_group: pull_request: - branches: [main, master] + paths: + - 'R/**' + - 'src/**' + - 'tests/**' + - 'inst/**' + - 'DESCRIPTION' + - '.github/workflows/test-coverage.yaml' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true name: test-coverage +permissions: read-all + jobs: test-coverage: runs-on: ubuntu-latest @@ -15,12 +41,7 @@ jobs: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} steps: - - name: Remove Microsoft repository configuration - run: | - sudo rm /etc/apt/sources.list.d/microsoft-prod.list - sudo apt-get update - - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - uses: r-lib/actions/setup-r@v2 with: @@ -28,9 +49,37 @@ jobs: - uses: r-lib/actions/setup-r-dependencies@v2 with: - extra-packages: any::covr + extra-packages: any::covr, any::xml2 needs: coverage - name: Test coverage - run: covr::codecov(quiet = FALSE) + run: | + cov <- covr::package_coverage( + quiet = FALSE, + clean = FALSE, + install_path = file.path(normalizePath(Sys.getenv("RUNNER_TEMP"), winslash = "/"), "package") + ) + covr::to_cobertura(cov) shell: Rscript {0} + + - uses: codecov/codecov-action@v4 + with: + fail_ci_if_error: ${{ github.event_name != 'pull_request' && true || false }} + file: ./cobertura.xml + plugin: noop + disable_search: true + token: ${{ secrets.CODECOV_TOKEN }} + + - name: Show testthat output + if: always() + run: | + ## -------------------------------------------------------------------- + find '${{ runner.temp }}/package' -name 'testthat.Rout*' -exec cat '{}' \; || true + shell: bash + + - name: Upload test results + if: failure() + uses: actions/upload-artifact@v4 + with: + name: coverage-test-failures + path: ${{ runner.temp }}/package diff --git a/.lintr b/.lintr index c5c32d8c..56cbcc6e 100644 --- a/.lintr +++ b/.lintr @@ -5,6 +5,7 @@ linters: all_linters( extraction_operator_linter = NULL, todo_comment_linter = NULL, library_call_linter = NULL, + brace_linter = NULL, undesirable_function_linter( modify_defaults( default_undesirable_functions, diff --git a/DESCRIPTION b/DESCRIPTION index a6ed6908..55f490b1 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -4,9 +4,9 @@ Type: Package Version: 1.0.0 Authors@R: c( - person(given = "Geraldine", family = "G贸mez-Mill谩n", email = "geralidine.gomez@javeriana.edu.co", role = c("aut", "ctb"), + person(given = "Geraldine", family = "G贸mez-Mill谩n", email = "geralidine.gomez@javeriana.edu.co", role = c("aut", "cre", "ctb"), comment = c(ORCID = "0009-0007-8701-0568")), - person(given = "Zulma M.", family = "Cucunub谩", email = "zulma.cucunuba@javeriana.edu.co", role = c("aut", "cre", "ctb"), + person(given = "Zulma M.", family = "Cucunub谩", email = "zulma.cucunuba@javeriana.edu.co", role = c("aut", "ctb"), comment = c(ORCID = "0000-0002-8165-3198")), person(given = "Jennifer A.", family = "Mendez-Romero", email = "jenniferk2@hotmail.com", role = c("aut", "ctb"), comment = c(ORCID = "0009-0001-6138-0225")), @@ -31,11 +31,11 @@ Authors@R: person("Pontificia Universidad Javeriana", role = "cph") ) Description: Provides functions for data wrangling and automated reports - from 'SIVIGILA' source. + from 'SIVIGILA' epidemiological surveillance system data from Colombia. License: MIT + file LICENSE Encoding: UTF-8 LazyData: true -RoxygenNote: 7.3.1 +RoxygenNote: 7.3.2 Imports: config, dplyr, @@ -46,19 +46,22 @@ Imports: epitrix, sf, readxl, + rlang, + tools, sysfonts, showtext, kableExtra Suggests: knitr, rmarkdown, + spelling, testthat (>= 3.0.0) -Depends: R (>= 3.5.0) +Depends: R (>= 4.0.0) Config/Needs/website: r-lib/pkgdown, epiverse-trace/epiversetheme VignetteBuilder: knitr -Language: spa +Language: es_ES URL: https://epiverse-trace.github.io/sivirep/, https://github.com/epiverse-trace/sivirep BugReports: https://github.com/epiverse-trace/sivirep/issues Config/testthat/edition: 3 diff --git a/NAMESPACE b/NAMESPACE index 3256b038..f22aa734 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -62,3 +62,4 @@ export(plot_top_area_geo) export(plot_years) import(dplyr) importFrom(dplyr,"%>%") +importFrom(rlang,":=") diff --git a/R/checking_data.R b/R/checking_data.R index 7f00d0eb..95cd8ebc 100644 --- a/R/checking_data.R +++ b/R/checking_data.R @@ -27,27 +27,32 @@ geo_filtro <- function(data_event, dpto = NULL, mpio = NULL) { cols_ocurren <- NULL if (!is.null(dpto)) { dept_data <- obtener_info_depts(dpto, mpio) - stopifnot("El departamento o municipio ingresado no existe" - = nrow(dept_data) > 0) + stopifnot( + "El departamento o municipio ingresado no existe" = nrow(dept_data) > 0 + ) dept_data <- dept_data[1, ] - cols_ocurren <- obtener_tip_ocurren_geo(data_event$cod_eve[1]) + cols_ocurren <- obtener_tip_ocurren_geo(data_event[["cod_eve"]][1]) } if (!is.null(dept_data)) { data_dept_filt <- - dplyr::filter(data_event, - data_event[[cols_ocurren[1]]] %in% - dept_data$codigo_departamento) + dplyr::filter( + data_event, + data_event[[cols_ocurren[1]]] %in% dept_data$codigo_departamento + ) } if (!is.null(mpio)) { - stopifnot("El parametro mpio debe ser una cadena de caracteres o un - numero" - = is.character(mpio) | is.numeric(mpio)) + stopifnot( + "El parametro mpio debe ser una cadena de caracteres o un + numero" = is.character(mpio) | is.numeric(mpio) + ) data_dept_filt[[cols_ocurren[3]]] <- as.character(data_dept_filt[[cols_ocurren[3]]]) data_dept_filt <- - dplyr::filter(data_dept_filt, - data_dept_filt[[cols_ocurren[3]]] %in% - as.character(dept_data$codigo_municipio)) + dplyr::filter( + data_dept_filt, + data_dept_filt[[cols_ocurren[3]]] %in% + as.character(dept_data$codigo_municipio) + ) } return(data_dept_filt) } @@ -66,17 +71,25 @@ geo_filtro <- function(data_event, dpto = NULL, mpio = NULL) { #' @examples #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -#' agrupar_semanaepi(data_event = data_limpia, -#' col_semanaepi = "semana") +#' agrupar_semanaepi( +#' data_event = data_limpia, +#' col_semanaepi = "semana" +#' ) #' @export agrupar_semanaepi <- function(data_event, col_semanaepi = "semana") { validar_data_event(data_event) - stopifnot("El parametro col_semanaepi debe ser una cadena de caracteres" = - is.character(col_semanaepi)) - data_event_agrupada <- dplyr::group_by_at(data_event, col_semanaepi) + stopifnot( + "El parametro col_semanaepi debe ser una cadena de caracteres" = + is.character(col_semanaepi) + ) + data_event_agrupada <- dplyr::group_by( + data_event, + dplyr::across(dplyr::all_of(col_semanaepi)) + ) data_event_agrupada <- dplyr::summarise(data_event_agrupada, - casos = sum(.data$uni_med)) + casos = sum(.data$uni_med) + ) data_event_agrupada <- data_event_agrupada[1:53, ] return(data_event_agrupada) } @@ -89,28 +102,32 @@ agrupar_semanaepi <- function(data_event, #' @param nomb_cols Un `character` (cadena de caracteres) o #' `array (arreglo) de character` que contiene el nombre de #' la(s) columna(s) en los datos de la enfermedad o evento. -#' @param porcentaje Un `boolean` (TRUE o FALSE) que indica +#' @param porcentaje Un `logical` (TRUE o FALSE) que indica #' si se debe agregar una columna con el porcentaje de casos; #' su valor por defecto es `FALSE`. -#' @param estandar Un `boolean` (TRUE o FALSE) que indica -#' si se debe utilizar el estandar de agrupaci贸n de los datos -#' del evento o enfermedad propuesto por el paquete, es decir +#' @param estandar Un `logical` (TRUE o FALSE) que indica +#' si se debe utilizar el est谩ndar de agrupaci贸n de los datos +#' del evento o enfermedad propuesto por el paquete, es decir, #' que se incluyan estas columnas o variables como parte del #' resultado `c("cod_eve", "nombre_evento", "ano")`; su valor -#' por defecto es `TRUE`, si su valor es `FALSE` agrupara los +#' por defecto es `TRUE`, si su valor es `FALSE` agrupar谩 los #' datos solamente por las columnas o variables enviadas en el -#' p谩rametro `nomb_cols`. +#' par谩metro `nomb_cols`. #' @return Un `data.frame` con los datos de una enfermedad #' o evento agrupados por el nombre de la(s) columna(s) y el #' n煤mero de casos. #' @examples #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -#' agrupar_cols_casos(data_event = data_limpia, -#' nomb_cols = "sexo", -#' porcentaje = TRUE) -#' agrupar_cols_casos(data_event = data_limpia, -#' nomb_cols = c("sexo", "semana")) +#' agrupar_cols_casos( +#' data_event = data_limpia, +#' nomb_cols = "sexo", +#' porcentaje = TRUE +#' ) +#' agrupar_cols_casos( +#' data_event = data_limpia, +#' nomb_cols = c("sexo", "semana") +#' ) #' @export agrupar_cols_casos <- function(data_event, nomb_cols, @@ -120,23 +137,35 @@ agrupar_cols_casos <- function(data_event, validar_nomb_cols(data_event, nomb_cols) validar_porcentaje(porcentaje) if (estandar) { - nomb_cols <- append(nomb_cols, c("cod_eve", "nombre_evento", "ano")) - data_event_agrupada <- dplyr::group_by_at(data_event, nomb_cols) + nomb_cols <- c(nomb_cols, c("cod_eve", "nombre_evento", "ano")) + data_event_agrupada <- dplyr::group_by( + data_event, + dplyr::across(dplyr::all_of(nomb_cols)) + ) data_event_agrupada <- dplyr::summarise(data_event_agrupada, - casos = dplyr::n(), - .groups = "drop") + casos = dplyr::n(), + .groups = "drop" + ) } else { - data_event_agrupada <- dplyr::group_by_at(data_event, nomb_cols) + data_event_agrupada <- dplyr::group_by( + data_event, + dplyr::across(dplyr::all_of(nomb_cols)) + ) data_event_agrupada <- dplyr::summarise(data_event_agrupada, - casos = sum(.data[["casos"]]), - .groups = "drop") + casos = sum(.data[["casos"]]), + .groups = "drop" + ) } if (porcentaje) { data_event_agrupada <- - dplyr::mutate(data_event_agrupada, porcentaje = - round(data_event_agrupada$casos - / sum(data_event_agrupada$casos) * 100, - 2)) + dplyr::mutate(data_event_agrupada, + porcentaje = + round( + data_event_agrupada$casos + / sum(data_event_agrupada$casos) * 100, + 2 + ) + ) } return(data_event_agrupada) } @@ -159,7 +188,7 @@ agrupar_cols_casos <- function(data_event, #' con la que debe finalizar el rango de edades. #' @param paso Un `numeric` (num茅rico) que contiene el valor del paso #' para generar el rango de edades. -#' @param porcentaje Un `boolean` (TRUE o FALSE) que indica si se debe +#' @param porcentaje Un `logical` (TRUE o FALSE) que indica si se debe #' agregar una columna con el porcentaje de casos; su valor por #' defecto es `TRUE`. #' @return Un `data.frame` con los datos de la enfermedad o evento @@ -167,28 +196,28 @@ agrupar_cols_casos <- function(data_event, #' @examples #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -#' data_edad <- agrupar_cols_casos(data_event = data_limpia, -#' c("edad", "semana"), -#' porcentaje = TRUE) -#' agrupar_rango_edad(data_event = data_edad, -#' col_edad = "edad", -#' min_val = 0, -#' max_val = max(data_edad$edad), -#' paso = 10, -#' porcentaje = TRUE) +#' data_edad <- agrupar_cols_casos( +#' data_event = data_limpia, +#' c("edad", "semana"), +#' porcentaje = TRUE +#' ) +#' agrupar_rango_edad( +#' data_event = data_edad, +#' col_edad = "edad", +#' min_val = 0, +#' max_val = max(data_edad$edad, na.rm = TRUE), +#' paso = 10, +#' porcentaje = TRUE +#' ) #' @export agrupar_rango_edad <- function(data_event, - col_edad, + col_edad = "edad", col_adicional = NULL, min_val, max_val, paso, porcentaje = TRUE) { validar_data_event(data_event) - data_vals_rango <- data.frame() - if (is.null(col_edad) || length(col_edad) > 0) { - col_edad <- "edad" - } validar_edad(data_event, col_edad) total_casos <- sum(data_event$casos) data_vals_rango <- @@ -196,15 +225,18 @@ agrupar_rango_edad <- function(data_event, data_event[[col_edad]], seq(min_val, max_val, paso) )) - data_vals_rango <- dplyr::group_by_at(data_vals_rango, - c("ranges", col_adicional)) + data_vals_rango <- dplyr::group_by( + data_vals_rango, + dplyr::across(dplyr::all_of(c("ranges", col_adicional))) + ) data_vals_rango <- dplyr::summarize(data_vals_rango, - casos = sum(.data$casos), - .groups = "drop") + casos = sum(.data$casos), + .groups = "drop" + ) data_vals_rango <- as.data.frame(data_vals_rango) if (porcentaje) { data_vals_rango <- data_vals_rango %>% - mutate(porcentaje = round(.data$casos / total_casos * 100, 3)) + mutate(porcentaje = round(.data$casos / total_casos * 100, 3)) } names(data_vals_rango)[names(data_vals_rango) == "ranges"] <- col_edad return(data_vals_rango) @@ -223,8 +255,10 @@ agrupar_rango_edad <- function(data_event, #' @examples #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -#' agrupar_fecha_inisintomas(data_event = data_limpia, -#' col_fecha = "ini_sin") +#' agrupar_fecha_inisintomas( +#' data_event = data_limpia, +#' col_fecha = "ini_sin" +#' ) #' @export agrupar_fecha_inisintomas <- function(data_event, col_fecha = "ini_sin") { @@ -233,11 +267,14 @@ agrupar_fecha_inisintomas <- function(data_event, if (is.null(col_fecha)) { col_fecha <- fechas_cols_nombres[3] } - stopifnot("El parametro col_fecha debe ser una cadena de caracteres" - = is.character(col_fecha)) - nomb_cols <- append(col_fecha, "semana") + stopifnot( + "El parametro col_fecha debe ser una cadena de caracteres" = + is.character(col_fecha) + ) + nomb_cols <- c(col_fecha, "semana") data_agrupada_fecha_ini <- agrupar_cols_casos(data_event, - nomb_cols = nomb_cols) + nomb_cols = nomb_cols + ) return(data_agrupada_fecha_ini) } @@ -249,17 +286,19 @@ agrupar_fecha_inisintomas <- function(data_event, #' @param col_sex Un `character` (cadena de caracteres) con el nombre #' de la columna que contiene el sexo en los datos de la enfermedad o evento; #' su valor por defecto es `"sexo"`. -#' @param porcentaje Un `boolean` (TRUE o FALSE) que indica si se debe +#' @param porcentaje Un `logical` (TRUE o FALSE) que indica si se debe #' agregar una columna con el porcentaje de casos; su valor por #' defecto es `TRUE`. -#' @return Un data.frame con los datos de la enfermedad o evento +#' @return Un `data.frame` con los datos de la enfermedad o evento #' agrupados por sexo y n煤mero de casos. #' @examples #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -#' agrupar_sex(data_event = data_limpia, -#' col_sex = "sexo", -#' porcentaje = TRUE) +#' agrupar_sex( +#' data_event = data_limpia, +#' col_sex = "sexo", +#' porcentaje = TRUE +#' ) #' @export agrupar_sex <- function(data_event, col_sex = "sexo", @@ -273,14 +312,14 @@ agrupar_sex <- function(data_event, #' @title Agrupar por sexo, semana epidemiol贸gica y casos #' @description Funci贸n que agrupa los datos de enfermedades por sexo, -#' semana, epidemiol贸gica y n煤mero de casos. +#' semana epidemiol贸gica y n煤mero de casos. #' @param data_event Un `data.frame` que contiene los datos de #' la enfermedad o evento. #' @param cols_sex Un `character` (cadena de caracteres) o -#' `array (arreglo) de character` con el nombre de la(s) +#' `array` (arreglo) de `character` con el nombre de la(s) #' columna(s) que contienen el sexo y las semanas #' epidemiol贸gicas; su valor por defecto es `c("sexo", "semana")`. -#' @param porcentaje Un `boolean` (TRUE o FALSE) que indica si se debe +#' @param porcentaje Un `logical` (TRUE o FALSE) que indica si se debe #' agregar una columna con el porcentaje de casos; su valor por #' defecto es `TRUE`. #' @return Un `data.frame` con los datos de la enfermedad o evento @@ -288,21 +327,27 @@ agrupar_sex <- function(data_event, #' @examples #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -#' agrupar_sex_semanaepi(data_event = data_limpia, -#' cols_sex = c("sexo", "semana"), -#' porcentaje = TRUE) +#' agrupar_sex_semanaepi( +#' data_event = data_limpia, +#' cols_sex = c("sexo", "semana"), +#' porcentaje = TRUE +#' ) #' @export agrupar_sex_semanaepi <- function(data_event, cols_sex = c("sexo", "semana"), porcentaje = TRUE) { validar_data_event(data_event) - stopifnot("El parametro cols_sex debe ser una cadena de caracteres - o un arreglo de cadenas de caracteres " - = (is.character(cols_sex) && !is.array(cols_sex)) || - (!is.character(cols_sex) && is.array(cols_sex))) - data_event_sex_semanaepi <- agrupar_cols_casos(data_event, - cols_sex, - porcentaje) + stopifnot( + "El parametro cols_sex debe ser una cadena de caracteres + o un arreglo de cadenas de caracteres " = + (is.character(cols_sex) && !is.array(cols_sex)) || + (!is.character(cols_sex) && is.array(cols_sex)) + ) + data_event_sex_semanaepi <- agrupar_cols_casos( + data_event, + cols_sex, + porcentaje + ) return(data_event_sex_semanaepi) } @@ -314,7 +359,7 @@ agrupar_sex_semanaepi <- function(data_event, #' @param col_edad Un `character` (cadena de caracteres) con el nombre #' de la columna que contiene las edades en los datos de la enfermedad o #' evento; su valor por defecto es `"edad"`. -#' @param porcentaje Un `boolean` (TRUE o FALSE) que indica si se debe +#' @param porcentaje Un `logical` (TRUE o FALSE) que indica si se debe #' agregar una columna con el porcentaje de casos; su valor por #' defecto es `FALSE`. #' @param interval_edad Un `numeric` (num茅rico) que contiene el intervalo del @@ -324,9 +369,11 @@ agrupar_sex_semanaepi <- function(data_event, #' @examples #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -#' agrupar_edad(data_event = data_limpia, -#' col_edad = "edad", -#' porcentaje = FALSE) +#' agrupar_edad( +#' data_event = data_limpia, +#' col_edad = "edad", +#' porcentaje = FALSE +#' ) #' @export agrupar_edad <- function(data_event, col_edad = "edad", @@ -335,18 +382,31 @@ agrupar_edad <- function(data_event, validar_data_event(data_event) validar_edad(data_event, col_edad) validar_porcentaje(porcentaje) - stopifnot("El parametro interval_edad debe ser un numero" - = is.numeric(interval_edad)) - data_event_edad <- agrupar_cols_casos(data_event, - col_edad) + stopifnot( + "El parametro interval_edad debe ser un numero" = is.numeric(interval_edad) + ) + data_event_edad <- agrupar_cols_casos( + data_event, + col_edad + ) + max_edad <- max(data_event_edad[[col_edad]], + na.rm = TRUE) + min_edad <- min(data_event_edad[[col_edad]], + na.rm = TRUE) + if (max_edad < interval_edad) { + interval_edad <- max_edad / 3 + } + if (interval_edad < min_edad) { + interval_edad <- min_edad + } data_event_edad <- agrupar_rango_edad(data_event_edad, - col_edad, - min_val = 0, - max_val = - max(data_event_edad[[col_edad]]), - paso = interval_edad, - porcentaje = porcentaje) + col_edad = col_edad, + min_val = 0, + max_val = max_edad, + paso = interval_edad, + porcentaje = porcentaje + ) return(data_event_edad) } @@ -357,11 +417,11 @@ agrupar_edad <- function(data_event, #' o evento. #' @param col_edad Un `character` (cadena de caracteres) con el nombre de la #' columna que contiene las edades en los datos de la enfermedad o evento; -#' su valor por defecto es `"edad`. +#' su valor por defecto es `"edad"`. #' @param col_sex Un `character` (cadena de caracteres) con el nombre de la #' columna que contiene el sexo en los datos de la enfermedad o evento; #' su valor por defecto es `"sexo`. -#' @param porcentaje Un `boolean` (TRUE o FALSE) que indica si se debe +#' @param porcentaje Un `logical` (TRUE o FALSE) que indica si se debe #' agregar una columna con el porcentaje de casos; su valor por #' defecto es `TRUE`. #' @param interval_edad Un `numeric` (num茅rico) que contiene el intervalo del @@ -371,10 +431,12 @@ agrupar_edad <- function(data_event, #' @examples #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -#' agrupar_edad_sex(data_event = data_limpia, -#' col_edad = "edad", -#' col_sex = "sexo", -#' porcentaje = TRUE) +#' agrupar_edad_sex( +#' data_event = data_limpia, +#' col_edad = "edad", +#' col_sex = "sexo", +#' porcentaje = TRUE +#' ) #' @export agrupar_edad_sex <- function(data_event, col_edad = "edad", @@ -386,16 +448,30 @@ agrupar_edad_sex <- function(data_event, validar_sex(data_event, col_sex) validar_porcentaje(porcentaje) nomb_cols <- c(col_edad, col_sex) - data_event_edad_sex <- agrupar_cols_casos(data_event, - nomb_cols, - porcentaje) + data_event_edad_sex <- agrupar_cols_casos( + data_event, + nomb_cols, + porcentaje + ) + max_edad <- max(data_event_edad_sex[[col_edad]], + na.rm = TRUE) + min_edad <- min(data_event_edad_sex[[col_edad]], + na.rm = TRUE) + if (max_edad < interval_edad) { + interval_edad <- max_edad / 3 + } + if (interval_edad < min_edad) { + interval_edad <- min_edad + } data_event_edad_sex <- agrupar_rango_edad( data_event_edad_sex, nomb_cols[1], nomb_cols[2], min_val = 0, max_val = - max(data_event_edad_sex[[nomb_cols[1]]]), + max(data_event_edad_sex[[nomb_cols[1]]], + na.rm = TRUE + ), paso = interval_edad, porcentaje = porcentaje ) @@ -410,7 +486,7 @@ agrupar_edad_sex <- function(data_event, #' @param col_dpto Un `character` (cadena de caracteres) con el nombre #' de la columna que contiene los c贸digos de los departamentos en los #' datos de la enfermedad o evento; su valor por defecto es `"cod_dpto_o"`. -#' @param porcentaje Un `boolean` (TRUE o FALSE) que indica si se debe +#' @param porcentaje Un `logical` (TRUE o FALSE) que indica si se debe #' agregar una columna con el porcentaje de casos; su valor por #' defecto es `FALSE`. #' @return Un `data.frame` con los datos de la enfermedad o evento agrupados @@ -418,25 +494,33 @@ agrupar_edad_sex <- function(data_event, #' @examples #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -#' agrupar_dpto(data_event = data_limpia, -#' col_dpto = "cod_dpto_o", -#' porcentaje = FALSE) +#' agrupar_dpto( +#' data_event = data_limpia, +#' col_dpto = "cod_dpto_o", +#' porcentaje = FALSE +#' ) #' @export agrupar_dpto <- function(data_event, col_dpto = "cod_dpto_o", porcentaje = FALSE) { validar_data_event(data_event) - stopifnot("El parametro col_dpto debe ser una cadena de caracteres" - = is.character(col_dpto), - "El parametro porcentaje debe ser un booleano (TRUE o FALSE)" = - is.logical(porcentaje)) + stopifnot( + "El parametro col_dpto debe ser una cadena de caracteres" = + is.character(col_dpto), + "El parametro porcentaje debe ser un booleano (TRUE o FALSE)" = + is.logical(porcentaje) + ) data_event_cods_dpto <- data_event - nomb_cols <- obtener_tip_ocurren_geo(data_event_cods_dpto$cod_eve[1]) + if (length(col_dpto) == 1) { + nomb_cols <- obtener_tip_ocurren_geo(data_event_cods_dpto[["cod_eve"]][1]) + nomb_cols <- nomb_cols[1:2] + } else { + nomb_cols <- col_dpto + } data_event_cods_dpto <- agrupar_cols_casos(data_event_cods_dpto, - nomb_cols = nomb_cols[1:2], - porcentaje = porcentaje) - data_event_cods_dpto[[nomb_cols[1]]] <- - as.character(data_event_cods_dpto[[nomb_cols[1]]]) + nomb_cols = nomb_cols, + porcentaje = porcentaje + ) return(data_event_cods_dpto) } @@ -450,7 +534,7 @@ agrupar_dpto <- function(data_event, #' @param col_mpio Un `character` (cadena de caracteres) con el nombre de #' la columna que contiene los c贸digos de los municipios en los datos de la #' enfermedad o evento; su valor por defecto es `"cod_mun_o"`. -#' @param porcentaje Un `boolean` (TRUE o FALSE) que indica si se debe +#' @param porcentaje Un `logical` (TRUE o FALSE) que indica si se debe #' agregar una columna con el porcentaje de casos; su valor por #' defecto es `FALSE`. #' @return Un `data.frame` con los datos de la enfermedad o evento agrupados @@ -458,37 +542,46 @@ agrupar_dpto <- function(data_event, #' @examples #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -#' agrupar_mpio(data_event = data_limpia, -#' dpto = "ANTIOQUIA", -#' col_mpio = "cod_mun_o", -#' porcentaje = FALSE) -#' agrupar_mpio(data_event = data_limpia, -#' dpto = "05", -#' col_mpio = "cod_mun_o", -#' porcentaje = FALSE) -#' agrupar_mpio(data_event = data_limpia, -#' dpto = 05, -#' col_mpio = "cod_mun_o", -#' porcentaje = TRUE) +#' agrupar_mpio( +#' data_event = data_limpia, +#' dpto = "ANTIOQUIA", +#' col_mpio = "cod_mun_o", +#' porcentaje = FALSE +#' ) +#' agrupar_mpio( +#' data_event = data_limpia, +#' dpto = "05", +#' col_mpio = "cod_mun_o", +#' porcentaje = FALSE +#' ) +#' agrupar_mpio( +#' data_event = data_limpia, +#' dpto = 05, +#' col_mpio = "cod_mun_o", +#' porcentaje = TRUE +#' ) #' @export agrupar_mpio <- function(data_event, dpto = NULL, col_mpio = "cod_mun_o", porcentaje = FALSE) { validar_data_event(data_event) - stopifnot("El parametro col_mpio debe ser una cadena de caracteres" - = is.character(col_mpio), - "El parametro porcentaje debe ser un booleano (TRUE o FALSE)" = - is.logical(porcentaje)) + stopifnot( + "El parametro col_mpio debe ser una cadena de caracteres" = + is.character(col_mpio), + "El parametro porcentaje debe ser un booleano (TRUE o FALSE)" = + is.logical(porcentaje) + ) cols_geo_ocurrencia <- data.frame() - cod_events <- unique(data_event$cod_eve) + cod_events <- unique(data_event[["cod_eve"]]) for (cod in cod_events) { - cols_geo_ocurrencia <- append(cols_geo_ocurrencia, - obtener_tip_ocurren_geo(cod)) + cols_geo_ocurrencia <- c( + cols_geo_ocurrencia, + obtener_tip_ocurren_geo(cod) + ) } - nomb_cols <- obtener_tip_ocurren_geo(data_event$cod_eve[1]) + nomb_cols <- obtener_tip_ocurren_geo(data_event[["cod_eve"]][1]) data_event_muns <- data_event - dept_data <- NULL if (!is.null(dpto)) { aux_dpto <- unique(data_event_muns[[nomb_cols[1]]]) if (length(aux_dpto) > 1) { @@ -497,21 +590,26 @@ agrupar_mpio <- function(data_event, } else { dpto <- unique(data_event_muns[[nomb_cols[1]]]) if (length(dpto) != 1) { - stopifnot("Debe ingresar el nombre o codigo del departamento" = - length(dpto) == 1) + stopifnot( + "Debe ingresar el nombre o codigo del departamento" = + length(dpto) == 1 + ) } } dept_data <- obtener_info_depts(dpto) data_event_muns <- agrupar_cols_casos(data_event_muns, - nomb_cols = nomb_cols[1:4], - porcentaje = porcentaje) + nomb_cols = nomb_cols[1:4], + porcentaje = porcentaje + ) data_event_muns[[nomb_cols[1]]] <- as.character(data_event_muns[[nomb_cols[1]]]) data_event_muns[[nomb_cols[3]]] <- as.character(data_event_muns[[nomb_cols[3]]]) dept_data <- dept_data[1, ] - data_event_muns <- dplyr::arrange(data_event_muns, - dplyr::desc(.data$casos)) + data_event_muns <- dplyr::arrange( + data_event_muns, + dplyr::desc(.data$casos) + ) return(data_event_muns) } @@ -523,7 +621,7 @@ agrupar_mpio <- function(data_event, #' @param col_area Un `character` (cadena de caracteres) con el nombre de #' la columna que contiene las 谩reas geogr谩ficas en los datos de la enfermedad #' o evento; su valor por defecto es `"area"`. -#' @param porcentaje Un `boolean` (TRUE o FALSE) que indica si se debe +#' @param porcentaje Un `logical` (TRUE o FALSE) que indica si se debe #' agregar una columna con el porcentaje de casos; su valor por #' defecto es `FALSE`. #' @return Un `data.frame` con los datos de la enfermedad o evento agrupados @@ -531,9 +629,11 @@ agrupar_mpio <- function(data_event, #' @examples #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -#' agrupar_area_geo(data_event = data_limpia, -#' col_area = "area", -#' porcentaje = FALSE) +#' agrupar_area_geo( +#' data_event = data_limpia, +#' col_area = "area", +#' porcentaje = FALSE +#' ) #' @export agrupar_area_geo <- function(data_event, col_area = "area", @@ -541,10 +641,14 @@ agrupar_area_geo <- function(data_event, validar_data_event(data_event) validar_area_geo(data_event, col_area) validar_porcentaje(porcentaje) - data_event_area <- agrupar_cols_casos(data_event, - col_area) - data_event_area <- dplyr::arrange(data_event_area, - dplyr::desc(.data$casos)) + data_event_area <- agrupar_cols_casos( + data_event, + col_area + ) + data_event_area <- dplyr::arrange( + data_event_area, + dplyr::desc(.data$casos) + ) return(data_event_area) } @@ -554,58 +658,66 @@ agrupar_area_geo <- function(data_event, #' @param data_event Un `data.frame` que contiene los datos de la #' enfermedad o evento. #' @param dpto Un `character` (cadena de caracteres) que contiene -#' el nombre del departamento; su valor por defecto es `NULL`; si se ingresa +#' el nombre del departamento; su valor por defecto es `NULL`. Si se ingresa #' un valor en este par谩metro se proceder谩 agrupar los datos por los -#' municipios del departamento y sus 谩reas geogr谩ficas; si no se +#' municipios del departamento y sus 谩reas geogr谩ficas. Si no se #' ingresa un valor en este par谩metro validar谩 si los datos ya est谩n -#' filtrados por alg煤n departamento, si no lo est谩n generar谩 la agrupaci贸n +#' filtrados por alg煤n departamento; si no lo est谩n generar谩 la agrupaci贸n #' por departamento. #' @param col_area Un `character` (cadena de caracteres) con el nombre de #' la columna que contiene las 谩reas geogr谩ficas en los datos de la enfermedad #' o evento; su valor por defecto es `"cod_mun_o"`. -#' @param porcentaje Un `boolean` (TRUE o FALSE) que indica si se debe +#' @param porcentaje Un `logical` (TRUE o FALSE) que indica si se debe #' agregar una columna con el porcentaje de casos; su valor por #' defecto es `FALSE`. -#' @param top Un `numeric` (numerico) que indica la cantidad de departamentos o +#' @param top Un `numeric` (num茅rico) que indica la cantidad de departamentos o #' municipios con mayor n煤mero de casos que se deben retornar; su valor #' por defecto es `10`. -#' @return Un `data.frame` con los datos de la enfermedad o evento agrupados -#' por c贸digos de municipios y n煤mero de casos. +#' @return Un `data.frame` con el top 10 de los datos de la enfermedad o evento +#' agrupados por 谩reas geogr谩ficas y n煤mero de casos. #' @examples #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -#' agrupar_top_area_geo(data_event = data_limpia, -#' dpto = "Antioquia", -#' col_area = "area", -#' porcentaje = FALSE, -#' top = 10) +#' agrupar_top_area_geo( +#' data_event = data_limpia, +#' dpto = "Antioquia", +#' col_area = "area", +#' porcentaje = FALSE, +#' top = 10 +#' ) #' @export agrupar_top_area_geo <- function(data_event, - dpto = NULL, - col_area = "area", - porcentaje = FALSE, - top = 10) { + dpto = NULL, + col_area = "area", + porcentaje = FALSE, + top = 10) { validar_data_event(data_event) validar_area_geo(data_event, col_area) validar_porcentaje(porcentaje) - nomb_cols <- append(col_area, - obtener_tip_ocurren_geo(data_event$cod_eve[1])[1:4]) + nomb_cols <- c( + col_area, + obtener_tip_ocurren_geo(data_event[["cod_eve"]][1])[1:4] + ) data_event_area <- data_event if (!is.null(dpto)) { - aux_dpto <- unique(data_event_area[[nomb_cols[2]]]) - if (length(aux_dpto) > 1) { - data_event_area <- geo_filtro(data_event, dpto) - } + aux_dpto <- unique(data_event_area[[nomb_cols[2]]]) + if (length(aux_dpto) > 1) { + data_event_area <- geo_filtro(data_event, dpto) + } } else { dpto <- unique(data_event_area[[nomb_cols[3]]]) if (length(dpto) != 1) { nomb_cols <- nomb_cols[1:3] } } - data_event_area <- agrupar_cols_casos(data_event_area, - nomb_cols) - data_event_area <- dplyr::arrange(data_event_area, - dplyr::desc(.data$casos)) + data_event_area <- agrupar_cols_casos( + data_event_area, + nomb_cols + ) + data_event_area <- dplyr::arrange( + data_event_area, + dplyr::desc(.data$casos) + ) if (top <= nrow(data_event_area)) { data_event_area <- data_event_area[1:top, ] } @@ -620,22 +732,26 @@ agrupar_top_area_geo <- function(data_event, #' la columna que contiene los c贸digos de los eventos o de las enfermedades #' en los datos; su valor por defecto es `"cod_eve"`. #' @return Un `data.frame` con los datos de la enfermedad o evento agrupados -#' por sus tipos. +#' por tipo. #' @examples #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -#' agrupar_eventos(data_event = data_limpia, -#' col_event = "cod_eve") +#' agrupar_eventos( +#' data_event = data_limpia, +#' col_event = "cod_eve" +#' ) #' @export agrupar_eventos <- function(data_event, col_event = "cod_eve") { validar_data_event(data_event) - stopifnot("El parametro col_event debe ser una cadena de caracteres" - = is.character(col_event)) + stopifnot( + "El parametro col_event debe ser una cadena de caracteres" = + is.character(col_event) + ) data_event_tipos <- agrupar_cols_casos(data_event, nomb_cols = col_event) return(data_event_tipos) } -#' @title Agrupar por los a帽os de una enfermedad o evento +#' @title Agrupar por a帽os de una enfermedad o evento #' @description Funci贸n que agrupa los casos por los a帽os de una enfermedad #' o evento. #' @param data_event Un `data.frame` que contiene los datos de la @@ -644,19 +760,24 @@ agrupar_eventos <- function(data_event, col_event = "cod_eve") { #' la columna que contiene los a帽os en los datos de la enfermedad o evento; #' su valor por defecto es `"ano"`. #' @return Un `data.frame` con los datos de la enfermedad o evento agrupados -#' por sus a帽os. +#' por a帽o. #' @examples #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -#' agrupar_years(data_event = data_limpia, -#' col_year = "ano") +#' agrupar_years( +#' data_event = data_limpia, +#' col_year = "ano" +#' ) #' @export agrupar_years <- function(data_event, col_year = "ano") { validar_data_event(data_event) validar_years(data_event, col_year) data_event_year <- agrupar_cols_casos(data_event, - nomb_cols = c(col_year, - "cod_eve")) + nomb_cols = c( + col_year, + "cod_eve" + ) + ) return(data_event_year) } @@ -665,43 +786,51 @@ agrupar_years <- function(data_event, col_year = "ano") { #' del caso. #' @param data_event Un `data.frame` que contiene los datos de la #' enfermedad o evento. -#' @param cols_tipo Un `character` (cadena de caracteres) con el nombre de -#' las columna(s) que contiene la clasificaci贸n inicial del caso en los datos -#' de la enfermedad o evento; su valor por defecto es `"tip_cas"`. +#' @param cols_tipo Un `character` (cadena de caracteres) o `array` (arreglo) +#' de `character` con el nombre de las columna(s) que contiene la clasificaci贸n +#' inicial del caso en los datos de la enfermedad o evento; su valor por +#' defecto es `"tip_cas"`. #' @return Un `data.frame` con los datos de la enfermedad o evento agrupados #' por la clasificaci贸n inicial del caso y/u otras variables como los a帽os. #' @examples #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -#' agrupar_tipo_caso(data_event = data_limpia, -#' cols_tipo = "tip_cas") +#' agrupar_tipo_caso( +#' data_event = data_limpia, +#' cols_tipo = "tip_cas" +#' ) #' @export agrupar_tipo_caso <- function(data_event, cols_tipo = "tip_cas") { validar_data_event(data_event) - stopifnot("El parametro cols_tipo debe ser una cadena de caracteres" - = is.character(cols_tipo)) + stopifnot( + "El parametro cols_tipo debe ser una cadena de caracteres" = + is.character(cols_tipo) + ) if (length(cols_tipo) == 1) { - cols_tipo <- c(cols_tipo, "cod_eve") + cols_tipo <- c(cols_tipo, "cod_eve") } etiquetas <- obtener_val_config("labels_cas_tip") etiquetas <- as.character(etiquetas) data_event_tipo <- agrupar_cols_casos(data_event, - nomb_cols = cols_tipo) + nomb_cols = cols_tipo + ) data_event_tipo <- dplyr::mutate(data_event_tipo, - nombre_tip_cas = - etiquetas[as.numeric(data_event_tipo[[cols_tipo[1]]])]) + nombre_tip_cas = + etiquetas[as.numeric(data_event_tipo[[cols_tipo[1]]])] + ) return(data_event_tipo) } #' @title Agrupar por la pertenencia 茅tnica -#' @description Funci贸n que agrupa los casos por la pertenencia 茅tnica +#' @description Funci贸n que agrupa los casos por la pertenencia 茅tnica. #' @param data_event Un `data.frame` que contiene los datos de la #' enfermedad o evento. -#' @param cols_etn Un `character` (cadena de caracteres) con el nombre de -#' las columna(s) que contiene(n) la pertenencia 茅tnica en los datos de la -#' enfermedad o evento; su valor por defecto es `"per_etn"` -#' @param porcentaje Un `boolean` (TRUE o FALSE) que indica. +#' @param cols_etn Un `character` (cadena de caracteres) o un `array` de +#' `character` con el nombre de la(s) columna(s) que contiene(n) la +#' pertenencia 茅tnica en los datos de la enfermedad o evento; +#' su valor por defecto es `"per_etn"` +#' @param porcentaje Un `logical` (TRUE o FALSE) que indica #' si se debe agregar una columna con el porcentaje de casos; #' su valor por defecto es `TRUE`. #' @return Un `data.frame` con los datos de la enfermedad o evento agrupados @@ -709,8 +838,10 @@ agrupar_tipo_caso <- function(data_event, cols_tipo = "tip_cas") { #' @examples #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -#' agrupar_per_etn(data_event = data_limpia, -#' cols_etn = "per_etn") +#' agrupar_per_etn( +#' data_event = data_limpia, +#' cols_etn = "per_etn" +#' ) #' @export agrupar_per_etn <- function(data_event, cols_etn = "per_etn", porcentaje = TRUE) { @@ -723,40 +854,48 @@ agrupar_per_etn <- function(data_event, cols_etn = "per_etn", etiquetas <- obtener_val_config("labels_per_etn") etiquetas <- unlist(etiquetas) data_event_tipo <- agrupar_cols_casos(data_event, - nomb_cols = cols_etn, - porcentaje = porcentaje) + nomb_cols = cols_etn, + porcentaje = porcentaje + ) data_event_tipo <- - dplyr::mutate(data_event_tipo, nombre_per_etn = - unname(etiquetas[ - as.character(data_event_tipo[[cols_etn[1]]])])) + dplyr::mutate(data_event_tipo, + nombre_per_etn = + unname(etiquetas[ + as.character(data_event_tipo[[cols_etn[1]]]) + ]) + ) return(data_event_tipo) } #' @title Calcular incidencia #' @description Funci贸n que calcula la incidencia de una enfermedad o evento -#' para todo Colombia, departamento o municipio. +#' para todo Colombia, un departamento o un municipio. #' @param data_incidencia Un `data.frame` que contiene la poblaci贸n a riesgo o -#' las proyecciones poblaciones DANE. Si este par谩metro est谩 vac铆o importar谩 -#' la poblaci贸n a riesgo o las proyecciones dependiendo de la disponibilidad de +#' las proyecciones poblaciones DANE. Si este par谩metro est谩 vac铆o, se importar谩 +#' la poblaci贸n a riesgo o las proyecciones, dependiendo de la disponibilidad de #' la informaci贸n; su valor por defecto es `NULL`. +#' @param cache Un `logical` (`TRUE` o `FALSE`) que indica si la poblaci贸n a +#' riesgo o las proyecciones poblacionales DANE descargadas deben ser +#' almacenados en cach茅. Su valor por defecto es `FALSE`. #' @param data_agrupada Un `data.frame` que contiene los datos de la enfermedad #' agrupados por departamento o municipio y n煤mero de casos. #' @param poblacion Un `character` (cadena de caracteres) con el tipo de -#' poblaci贸n para efectuar el calculo de la incidencia. Indica si se -#' va a utilizar la poblaci贸n a riesgo del evento `"riesgo"` o las -#' proyecciones poblacionales DANE `"proyecciones"`; su valor por defecto -#' es `NULL`. -#' @param year Un `numeric` (numerico) con el a帽o que se debe tomar de las -#' proyecciones poblacionales; su valor por defecto es `NULL`. +#' poblaci贸n para calcular la incidencia. Puede ser `"riesgo"` para la poblaci贸n +#' a riesgo o `"proyecciones"` para las proyecciones poblacionales DANE; +#' su valor por defecto es `NULL`. +#' @param year Un `numeric` (num茅rico) con el a帽o que se debe tomar en la +#' poblaci贸n a riesgo o en las proyecciones poblacionales DANE; su valor por +#' defecto es `NULL`. #' @param dpto Un `character` (cadena de caracteres) o `numeric` (num茅rico) #' que contiene el c贸digo o nombre del departamento; su valor por #' defecto es `NULL`. #' @param mpio Un `character` (cadena de caracteres) o `numeric` (num茅rico) #' que contiene el c贸digo o nombre del municipio; su valor por defecto #' es `NULL`. -#' @param sex Un `character` (cadena de caracteres) que contiene el sexo`"F"` -#' para Femenino y `"M"` Masculino; su valor por defecto es `NULL`. -#' @return Un `numeric` con el calculo de la incidencia para todo Colombia, un +#' @param sex Un `character` (cadena de caracteres) que especifica el +#' sexo: `"F"` para Femenino y `"M"` para Masculino; su valor por defecto +#' es `NULL`. +#' @return Un `numeric` con el c谩lculo de la incidencia para todo Colombia, un #' departamento, municipio o sexo especifico. #' @examples #' \donttest{ @@ -764,30 +903,38 @@ agrupar_per_etn <- function(data_event, cols_etn = "per_etn", #' data_limpia <- limpiar_data_sivigila(data_event = dengue2020) #' # C谩lculo de la incidencia con proyecciones poblacionales por departamento #' data_agrupada_mpios <- agrupar_mpio(data_limpia, dpto = "Antioquia") -#' calcular_incidencia(data_agrupada = data_agrupada_mpios, -#' poblacion = "proyecciones", -#' dpto = "05", -#' year = 2020) +#' calcular_incidencia( +#' data_agrupada = data_agrupada_mpios, +#' poblacion = "proyecciones", +#' dpto = "05", +#' year = 2020 +#' ) #' # C谩lculo de la incidencia con proyecciones poblacionales por municipio -#' calcular_incidencia(data_agrupada = data_agrupada_mpios, -#' poblacion = "proyecciones", -#' dpto = "Antioquia", -#' mpio = "05001", -#' year = 2020) +#' calcular_incidencia( +#' data_agrupada = data_agrupada_mpios, +#' poblacion = "proyecciones", +#' dpto = "Antioquia", +#' mpio = "05001", +#' year = 2020 +#' ) #' # C谩lculo de la incidencia con poblaci贸n a riesgo para Colombia #' data_agrupada_dptos <- agrupar_dpto(data_limpia) -#' calcular_incidencia(poblacion = "riesgo", -#' data_agrupada = data_agrupada_dptos, -#' year = 2020) +#' calcular_incidencia( +#' poblacion = "riesgo", +#' data_agrupada = data_agrupada_dptos, +#' year = 2020 +#' ) #' } #' @export -calcular_incidencia <- function(data_incidencia = NULL, data_agrupada, +calcular_incidencia <- function(data_incidencia = NULL, + cache = FALSE, data_agrupada, poblacion = NULL, year = NULL, dpto = NULL, mpio = NULL, sex = NULL) { validar_data_agrupada(data_agrupada) nombre_evento <- data_agrupada$nombre_evento[1] - vals_event <- obtener_cond_inciden_event(cod_eve = data_agrupada$cod_eve[1]) + vals_event <- + obtener_cond_inciden_event(cod_eve = data_agrupada[["cod_eve"]][1]) coeficiente <- as.integer(vals_event$coeficiente) if (is.null(year)) { year <- as.numeric(obtener_year(data_agrupada)) @@ -796,31 +943,39 @@ calcular_incidencia <- function(data_incidencia = NULL, data_agrupada, poblacion <- vals_event$denominador } pop_incidencia <- - obtener_pob_incidencia(data_incidencia = data_incidencia, - poblacion = poblacion, - event = nombre_evento, - year = year) + obtener_pob_incidencia( + data_incidencia = data_incidencia, + poblacion = poblacion, + event = nombre_evento, + year = year, + cache = cache + ) data_incidencia <- pop_incidencia$data_incidencia poblacion <- pop_incidencia$poblacion poblacion_incidencia <- data_incidencia - total_casos <- NULL total_poblacion <- NULL incidencia <- 0.00 - nomb_cols <- obtener_tip_ocurren_geo(data_agrupada$nombre_evento[1]) - unidades_geo <- obtener_dpto_mpio(data_agrupada = data_agrupada, - nomb_cols = nomb_cols, - dpto = dpto, mpio = mpio) + nomb_cols <- obtener_tip_ocurren_geo(data_agrupada[["cod_eve"]][1]) + unidades_geo <- obtener_dpto_mpio( + data_agrupada = data_agrupada, + nomb_cols = nomb_cols, + dpto = dpto, mpio = mpio + ) dpto <- unidades_geo$dpto mpio <- unidades_geo$mpio if (!is.null(dpto)) { if (poblacion == "proyecciones") { poblacion_incidencia <- - dplyr::filter(poblacion_incidencia, - .data$area_geografica == "Total", - .data$dp == dpto, .data$ano == year) + dplyr::filter( + poblacion_incidencia, + .data$area_geografica == "Total", + .data$dp == dpto, .data$ano == year + ) } else { - poblacion_incidencia <- dplyr::filter(data_incidencia, - .data$cod_dpto == dpto) + poblacion_incidencia <- dplyr::filter( + data_incidencia, + .data$cod_dpto == dpto + ) total_poblacion <- sum(poblacion_incidencia[[paste0("poblacion_riesgo_", year)]]) } @@ -838,14 +993,16 @@ calcular_incidencia <- function(data_incidencia = NULL, data_agrupada, data_agrupada <- data_agrupada[data_agrupada[[nomb_cols[3]]] == mpio, ] } } else if (is.null(sex)) { - data_agrupada <- data_agrupada[data_agrupada[[nomb_cols[1]]] == dpto, ] + data_agrupada <- data_agrupada[data_agrupada[[nomb_cols[1]]] == dpto, ] } } else { if (poblacion == "proyecciones") { poblacion_incidencia <- - dplyr::filter(data_incidencia, - .data$area_geografica == "Total", - .data$ano == year) + dplyr::filter( + data_incidencia, + .data$area_geografica == "Total", + .data$ano == year + ) } else { total_poblacion <- sum(poblacion_incidencia[[paste0("poblacion_riesgo_", year)]]) @@ -858,32 +1015,41 @@ calcular_incidencia <- function(data_incidencia = NULL, data_agrupada, total_poblacion <- sum(poblacion_incidencia$hombres) } } else if (poblacion == "proyecciones") { - total_poblacion <- sum(poblacion_incidencia$total) + total_poblacion <- sum(poblacion_incidencia$total) } total_casos <- sum(data_agrupada$casos) if (total_poblacion > 0) { - incidencia <- round((total_casos / total_poblacion) * - coeficiente, - 2) + incidencia <- round( + (total_casos / total_poblacion) * + coeficiente, + 2 + ) } - return(incidencia) + pop_incidencia_total <- list( + incidencia = incidencia, + poblacion = poblacion + ) + return(pop_incidencia_total) } #' @title Calcular incidencia seg煤n distribuci贸n geogr谩fica #' @description Funci贸n que calcula la incidencia de una enfermedad o evento #' para todos los departamentos de Colombia o los municipios de un departamento. #' @param data_incidencia Un `data.frame` que contiene las proyecciones -#' poblaciones del DANE; su valor por defecto es `NULL`. +#' poblacionales del DANE; su valor por defecto es `NULL`. +#' @param cache Un `logical` (`TRUE` o `FALSE`) que indica si la poblaci贸n a +#' riesgo o las proyecciones poblacionales DANE descargadas deben ser +#' almacenados en cach茅. Su valor por defecto es `FALSE`. #' @param data_agrupada Un `data.frame` que contiene los datos de la enfermedad #' agrupados por departamento o municipio y n煤mero de casos. #' @param poblacion Un `character` (cadena de caracteres) con el tipo de -#' poblaci贸n para efectuar el calculo de la incidencia. Indica si se -#' desea utilizar la poblaci贸n a riesgo del evento `"riesgo"` o las -#' proyecciones poblacionales DANE `"proyecciones"`; su valor por defecto -#' es `NULL`. -#' @param year Un `numeric` (numerico) con el a帽o que se debe tomar de las -#' proyecciones poblacionales. -#' @return Un `data.frame` con el calculo de la incidencia para todos los +#' poblaci贸n para calcular la incidencia. Puede ser `"riesgo"` para la poblaci贸n +#' a riesgo o `"proyecciones"` para las proyecciones poblacionales DANE; +#' su valor por defecto es `NULL`. +#' @param year Un `numeric` (num茅rico) con el a帽o que se debe tomar en la +#' poblaci贸n a riesgo o en las proyecciones poblacionales DANE; su valor por +#' defecto es `NULL`. +#' @return Un `data.frame` con el c谩lculo de la incidencia para todos los #' departamentos de Colombia o los municipios de un departamento. #' @examples #' \donttest{ @@ -891,24 +1057,29 @@ calcular_incidencia <- function(data_incidencia = NULL, data_agrupada, #' data_limpia <- limpiar_data_sivigila(data_event = dengue2020) #' data_agrupada_mpios <- agrupar_mpio(data_limpia, dpto = "Antioquia") #' # C谩lculo de la incidencia con poblaci贸n a riesgo por departamento -#' calcular_incidencia_geo(poblacion = "riesgo", -#' data_agrupada = data_agrupada_mpios, -#' year = 2020) +#' calcular_incidencia_geo( +#' poblacion = "riesgo", +#' data_agrupada = data_agrupada_mpios, +#' year = 2020 +#' ) #' data_agrupada_dptos <- agrupar_dpto(data_limpia) #' # C谩lculo de la incidencia con proyecciones poblacionales para Colombia -#' calcular_incidencia_geo(poblacion = "proyecciones", -#' data_agrupada = data_agrupada_dptos, -#' year = 2020) +#' calcular_incidencia_geo( +#' poblacion = "proyecciones", +#' data_agrupada = data_agrupada_dptos, +#' year = 2020 +#' ) #' } #' @export calcular_incidencia_geo <- function(data_incidencia = NULL, + cache = FALSE, data_agrupada, poblacion = NULL, year = NULL) { validar_data_agrupada(data_agrupada) data_geo_incidencia <- NULL - nombre_evento <- data_agrupada$nombre_evento[1] - cod_evento <- data_agrupada$cod_eve[1] + nombre_evento <- data_agrupada[["nombre_evento"]][1] + cod_evento <- data_agrupada[["cod_eve"]][1] if (is.null(year)) { year <- as.numeric(obtener_year(data_agrupada)) } @@ -918,107 +1089,139 @@ calcular_incidencia_geo <- function(data_incidencia = NULL, poblacion <- vals_event$denominador } pop_incidencia <- - obtener_pob_incidencia(data_incidencia = data_incidencia, - poblacion = poblacion, - event = nombre_evento, - year = year) + obtener_pob_incidencia( + data_incidencia = data_incidencia, + poblacion = poblacion, + event = nombre_evento, + year = year, + cache = cache + ) data_incidencia <- pop_incidencia$data_incidencia poblacion <- pop_incidencia$poblacion - nomb_cols <- obtener_tip_ocurren_geo(nombre_evento) + nomb_cols <- obtener_tip_ocurren_geo(cod_evento) if (nomb_cols[1] %in% colnames(data_agrupada) && - !(nomb_cols[3] %in% colnames(data_agrupada))) { - incidencia_dptos <- NULL - data_agrupada <- group_by_at(data_agrupada, nomb_cols[1:2]) + !(nomb_cols[3] %in% colnames(data_agrupada))) { + data_agrupada <- group_by( + data_agrupada, + dplyr::across(dplyr::all_of(nomb_cols[1:2])) + ) data_agrupada <- dplyr::summarise(data_agrupada, - casos = - sum(.data[["casos"]]), - .groups = "drop") - data_agrupada$nombre_evento <- rep(nombre_evento, nrow(data_agrupada)) - data_agrupada$cod_eve <- rep(cod_evento, nrow(data_agrupada)) - for (fila in seq_len(nrow(data_agrupada))) { + casos = + sum(.data[["casos"]]), + .groups = "drop" + ) + data_agrupada$nombre_evento <- nombre_evento + data_agrupada$cod_eve <- cod_evento + + geo_incidencia <- rep_len(NA_real_, nrow(data_agrupada)) + for (fila in seq_along(geo_incidencia)) { dpto_fila <- data_agrupada[fila, ] - incidencia <- calcular_incidencia(data_incidencia = data_incidencia, - data_agrupada = dpto_fila, - poblacion = poblacion, - dpto = dpto_fila[[nomb_cols[1]]], - year = year) - incidencia_dptos <- append(incidencia_dptos, incidencia) + incidencia <- calcular_incidencia( + data_incidencia = data_incidencia, + data_agrupada = dpto_fila, + poblacion = poblacion, + dpto = dpto_fila[[nomb_cols[1]]], + year = year + ) + geo_incidencia[fila] <- incidencia$incidencia } - geo_incidencia <- data.frame(incidencia = incidencia_dptos) - data_geo_incidencia <- cbind(data_agrupada, geo_incidencia) + data_geo_incidencia <- cbind(data_agrupada, + incidencia = geo_incidencia + ) } else if (nomb_cols[3] %in% colnames(data_agrupada)) { - incidencia_mpios <- NULL - data_agrupada <- group_by_at(data_agrupada, c(nomb_cols[3:4], - nomb_cols[1:2])) + data_agrupada <- group_by( + data_agrupada, + dplyr::across(dplyr::all_of(nomb_cols[1:4])) + ) data_agrupada <- dplyr::summarise(data_agrupada, - casos = - sum(.data[["casos"]]), - .groups = "drop") - data_agrupada$nombre_evento <- rep(nombre_evento, nrow(data_agrupada)) - data_agrupada$cod_eve <- rep(cod_evento, nrow(data_agrupada)) - for (fila in seq_len(nrow(data_agrupada))) { + casos = + sum(.data[["casos"]]), + .groups = "drop" + ) + data_agrupada$nombre_evento <- nombre_evento + data_agrupada$cod_eve <- cod_evento + geo_incidencia <- rep_len(NA_real_, nrow(data_agrupada)) + for (fila in seq_along(geo_incidencia)) { mpio_fila <- data_agrupada[fila, ] - incidencia <- calcular_incidencia(data_incidencia = data_incidencia, - data_agrupada = mpio_fila, - poblacion = poblacion, - dpto = mpio_fila[[nomb_cols[1]]], - mpio = mpio_fila[[nomb_cols[3]]], - year = year) - incidencia_mpios <- append(incidencia_mpios, incidencia) + incidencia <- calcular_incidencia( + data_incidencia = data_incidencia, + data_agrupada = mpio_fila, + poblacion = poblacion, + dpto = mpio_fila[[nomb_cols[1]]], + mpio = mpio_fila[[nomb_cols[3]]], + year = year + ) + geo_incidencia[fila] <- incidencia$incidencia } - geo_incidencia <- data.frame(incidencia = incidencia_mpios) - data_geo_incidencia <- cbind(data_agrupada, geo_incidencia) + data_geo_incidencia <- cbind(data_agrupada, + incidencia = geo_incidencia + ) } - return(data_geo_incidencia) + pop_data_incidencia <- list( + data_incidencia = data_geo_incidencia, + poblacion = poblacion + ) + return(pop_data_incidencia) } #' @title Calcular incidencia por sexo #' @description Funci贸n que calcula la incidencia de una enfermedad o evento #' para todos los departamentos de Colombia o los municipios de un departamento -#' por sexo. -#' @param data_incidencia Un `data.frame` que contiene la proyecciones +#' por cada sexo. +#' @param data_incidencia Un `data.frame` que contiene las proyecciones #' poblacionales del DANE; su valor por defecto es `NULL`. +#' @param cache Un `logical` (`TRUE` o `FALSE`) que indica si la poblaci贸n a +#' riesgo o las proyecciones poblacionales DANE descargadas deben ser +#' almacenados en cach茅. Su valor por defecto es `FALSE`. #' @param data_agrupada Un `data.frame` que contiene los datos de la enfermedad #' agrupados por departamento o municipio y n煤mero de casos. -#' @param year Un `numeric` (numerico) con el a帽o que se debe tomar de las -#' proyecciones poblacionales; valor por defecto es `NULL`. +#' @param year Un `numeric` (num茅rico) con el a帽o que se debe tomar en la +#' poblaci贸n a riesgo o en las proyecciones poblacionales DANE; su valor por +#' defecto es `NULL`. #' @param dpto Un `character` (cadena de caracteres) o `numeric` (num茅rico) #' que contiene el c贸digo o nombre del departamento; su valor por #' defecto es `NULL`. #' @param mpio Un `character` (cadena de caracteres) o `numeric` (num茅rico) #' que contiene el c贸digo o nombre del municipio; su valor por defecto #' es `NULL`. -#' @return Un `data.frame` con el calculo de la incidencia para todos los -#' departamentos de Colombia o los municipios de un departamento. +#' @return Un `data.frame` con el c谩lculo de la incidencia para todos los +#' departamentos de Colombia o los municipios de un departamento por sexo. #' @examples #' \donttest{ #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(data_event = dengue2020) #' # C谩lculo de la incidencia con proyecciones poblacionales por sexo y #' # departamento -#' data_filtrada <- geo_filtro(data_event = data_limpia, -#' dpto = "05") +#' data_filtrada <- geo_filtro( +#' data_event = data_limpia, +#' dpto = "05" +#' ) #' data_agrupada <- agrupar_sex(data_filtrada) -#' calcular_incidencia_sex(data_agrupada = data_agrupada, -#' dpto = "05", -#' year = 2020) +#' calcular_incidencia_sex( +#' data_agrupada = data_agrupada, +#' dpto = "05", +#' year = 2020 +#' ) #' #' C谩lculo de la incidencia con proyecciones poblacionales por sexo y #' # municipio -#' data_filtrada <- geo_filtro(data_event = data_limpia, -#' dpto = "05", -#' mpio = "Medellin") -#' calcular_incidencia_sex(data_agrupada = data_agrupada, -#' dpto = "05", -#' mpio = "Medellin") +#' data_filtrada <- geo_filtro( +#' data_event = data_limpia, +#' dpto = "05", +#' mpio = "Medellin" +#' ) +#' calcular_incidencia_sex( +#' data_agrupada = data_agrupada, +#' dpto = "05", +#' mpio = "Medellin" +#' ) #' } #' @export calcular_incidencia_sex <- function(data_incidencia = NULL, + cache = FALSE, data_agrupada, year = NULL, dpto = NULL, mpio = NULL) { validar_data_agrupada(data_agrupada) - data_incidencia_sex <- NULL - incidencia <- NULL dept_data <- NULL nombre_evento <- data_agrupada$nombre_evento[1] if (is.null(year)) { @@ -1026,23 +1229,30 @@ calcular_incidencia_sex <- function(data_incidencia = NULL, } if (is.null(data_incidencia)) { data_incidencia <- - import_pob_incidencia(poblacion = "proyecciones", year = year) - message("Las incidencias se calcularon con las proyecciones ", - "poblacionales DANE. Si usted cuenta con la poblacion ", - "a riesgo definida por el Ministerio de Salud para el ", - year, " puede hacer uso de ella, asignandola en el ", - "argumento data_incidencia de la funcion") + import_pob_incidencia(poblacion = "proyecciones", year = year, + cache = cache) + message( + "Las incidencias se calcularon con las proyecciones ", + "poblacionales DANE. Si usted cuenta con la poblacion ", + "a riesgo definida por el Ministerio de Salud para el ", + year, " puede hacer uso de ella, asignandola en el ", + "argumento data_incidencia de la funcion" + ) } else { validar_data_incidencia(data_incidencia) } if (!is.null(dpto)) { - stopifnot("El parametro dpto debe ser una cadena de caracteres + stopifnot( + "El parametro dpto debe ser una cadena de caracteres o numerico" = - (is.numeric(dpto) && !is.character(dpto)) || - (!is.numeric(dpto) && is.character(dpto))) + (is.numeric(dpto) && !is.character(dpto)) || + (!is.numeric(dpto) && is.character(dpto)) + ) dept_data <- obtener_info_depts(dpto, mpio) - stopifnot("El departamento o municipio ingresado no existe" - = seq_len(nrow(dept_data)) > 0) + stopifnot( + "El departamento o municipio ingresado no existe" = + seq_len(nrow(dept_data)) > 0 + ) dept_data <- dept_data[1, ] dpto <- dept_data$codigo_departamento if (!is.null(mpio)) { @@ -1050,39 +1260,42 @@ calcular_incidencia_sex <- function(data_incidencia = NULL, } } cod_eve <- data_agrupada$cod_eve[1] - data_agrupada <- group_by_at(data_agrupada, "sexo") + data_agrupada <- group_by( + data_agrupada, + .data$sexo + ) data_agrupada <- dplyr::summarise(data_agrupada, - casos = sum(.data[["casos"]]), - .groups = "drop") - cols_eve <- data.frame(cod_eve = rep(cod_eve, - nrow(data_agrupada)), - nombre_evento = rep(nombre_evento, - nrow(data_agrupada))) - data_agrupada <- cbind(data_agrupada, cols_eve) - for (fila in seq_len(nrow(data_agrupada))) { + casos = sum(.data[["casos"]]), + .groups = "drop" + ) + data_agrupada$cod_eve <- cod_eve + data_agrupada$nombre_evento <- nombre_evento + incidencia <- rep_len(NA_real_, nrow(data_agrupada)) + for (fila in seq_along(incidencia)) { sex_fila <- data_agrupada[fila, ] - incidencia_sex <- calcular_incidencia(data_incidencia = data_incidencia, - data_agrupada = sex_fila, - poblacion = "proyecciones", - dpto = dpto, - mpio = mpio, - sex = sex_fila[["sexo"]], - year = year) - incidencia <- append(incidencia, incidencia_sex) + incidencia_sex <- calcular_incidencia( + data_incidencia = data_incidencia, + data_agrupada = sex_fila, + poblacion = "proyecciones", + dpto = dpto, + mpio = mpio, + sex = sex_fila[["sexo"]], + year = year + ) + incidencia[fila] <- incidencia_sex$incidencia } data_incidencia_sex <- cbind(data_agrupada, incidencia) if (!is.null(dpto) && is.null(data_incidencia_sex)) { - nomb_dpto <- rep(dept_data$nombre_departamento[1], - nrow(data_incidencia_sex)) - cod_dpto <- rep(dpto, nrow(data_incidencia_sex)) - data_incidencia_sex["nombre_departamento"] <- nomb_dpto - data_incidencia_sex["codigo_departamento"] <- cod_dpto + data_incidencia_sex$nombre_departamento <- dept_data$nombre_departamento[1] + data_incidencia_sex$codigo_departamento <- dpto if (!is.null(mpio)) { - nomb_mpio <- rep(dept_data$nombre_municipio[1], nrow(data_incidencia_sex)) - cod_mpio <- rep(mpio, nrow(data_incidencia_sex)) - data_incidencia_sex["nombre_municipio"] <- nomb_mpio - data_incidencia_sex["codigo_municipio"] <- cod_mpio + data_incidencia_sex$nombre_municipio <- dept_data$nombre_municipio[1] + data_incidencia_sex$codigo_municipio <- mpio } } - return(data_incidencia_sex) + pop_data_incidencia <- list( + data_incidencia = data_incidencia_sex, + poblacion = "proyecciones" + ) + return(pop_data_incidencia) } diff --git a/R/cleaning_data.R b/R/cleaning_data.R index 2cf51293..f2515bff 100644 --- a/R/cleaning_data.R +++ b/R/cleaning_data.R @@ -1,10 +1,10 @@ #' @title Estandarizar c贸digos geogr谩ficos de los datos de una enfermedad #' o evento #' @description Funci贸n que estandariza los c贸digos geogr谩ficos de los datos -#' de una enfermedad o evento seg煤n la codificaci贸n del DIVIPOLA +#' de una enfermedad o evento seg煤n la codificaci贸n del DIVIPOLA. #' @param data_event Un `data.frame` que contiene los datos de una -#' enfermedad o evento. -#' @return Un `data.frame` que contiene los c贸digos geogr谩ficos estandarizados +#' enfermedad o evento con c贸digos geogr谩ficos. +#' @return Un `data.frame` con los c贸digos geogr谩ficos estandarizados #' de los datos de una enfermedad o evento seg煤n la codificaci贸n del DIVIPOLA. #' @examples #' data(dengue2020) @@ -14,23 +14,34 @@ estandarizar_geo_cods <- function(data_event) { validar_data_event(data_event) geo_columns <- obtener_val_config("geo_column_names") + nomb_cols <- names(data_event) for (column in geo_columns) { - if (stringr::str_detect(column, stringr::fixed("dpto"))) { + if (stringr::str_detect(column, stringr::fixed("dpto")) + && column %in% nomb_cols) { data_event[[column]] <- formatC(data_event[[column]], - width = 2, - format = "d", - flag = "0") + width = 2, + format = "d", + flag = "0" + ) } - if (stringr::str_detect(column, stringr::fixed("mun"))) { + if (stringr::str_detect(column, stringr::fixed("mun")) + && column %in% nomb_cols) { data_event[[column]] <- formatC(data_event[[column]], - width = 3, - format = "d", - flag = "0") - col_dpto <- stringr::str_replace(column, stringr::fixed("_mun_"), - "_dpto_") + width = 3, + format = "d", + flag = "0" + ) + col_dpto <- stringr::str_replace( + column, stringr::fixed("_mun_"), + "_dpto_" + ) + # formatC() will sometimes return elements longer than 3, even though we + # specified width = 3, because it will not truncate longer strings if (max(nchar(data_event[[column]])) == 3) { - data_event[[column]] <- paste0(data_event[[col_dpto]], - data_event[[column]]) + data_event[[column]] <- paste0( + data_event[[col_dpto]], + data_event[[column]] + ) } } } @@ -38,7 +49,7 @@ estandarizar_geo_cods <- function(data_event) { } #' @title Convertir edad a a帽os -#' @description Funci贸n que convierte las edades en a帽os seg煤n las unidades de +#' @description Funci贸n que convierte las edades a a帽os seg煤n las unidades de #' medida del SIVIGILA. #' @param data_event Un `data.frame` que contiene los datos de una #' enfermedad o evento. @@ -48,50 +59,106 @@ estandarizar_geo_cods <- function(data_event) { #' @param col_uni_med Un `character` (cadena de caracteres) con el nombre #' de la columna que contiene las unidades de medida en los datos de una #' enfermedad o evento; su valor por defecto es `"uni_med"`. -#' @return Un `data.frame` con las edades en a帽os seg煤n las unidades de medida -#' del SIVIGILA. +#' @param uni_med Un `numeric` (num茅rico) o `character`(cadena de +#' caracteres) que contiene la unidad de medida a la que se debe +#' estandarizar la edad; su valor por defecto es `1`. +#' @return Un `data.frame` con las edades convertidas en a帽os seg煤n las +#' unidades de medida del SIVIGILA. #' @examples #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -#' convert_edad(data_event = data_limpia, -#' col_edad = "edad", -#' col_uni_med = "uni_med") +#' convert_edad( +#' data_event = data_limpia, +#' col_edad = "edad", +#' col_uni_med = "uni_med", +#' uni_med = 1 +#' ) +#' @importFrom rlang := #' @export convert_edad <- function(data_event, col_edad = "edad", - col_uni_med = "uni_med") { + col_uni_med = "uni_med", + uni_med = 1) { validar_data_event(data_event) validar_edad(data_event, col_edad) - stopifnot("El parametro col_uni_med debe ser una cadena de caracteres" = - is.character(col_uni_med)) - data_event$uni_med <- as.numeric(data_event$uni_med) - data_event$edad <- as.numeric(data_event$edad) - data_event_years <- - dplyr::mutate(data_event, - edad = dplyr::case_when(eval(parse(text = - col_uni_med)) == 1 ~ - round(eval(parse(text = col_edad)), - 3), - eval(parse(text = col_uni_med)) == 2 ~ - round((eval(parse(text = - col_edad)) - / 12), - 3), - eval(parse(text = col_uni_med)) == 3 ~ - round((eval(parse(text = col_edad)) - / 876), - 3), - eval(parse(text = col_uni_med)) == 4 ~ - round((eval(parse(text = - col_edad)) - / 525960), - 3), - eval(parse(text = col_uni_med)) == 5 ~ - round((eval(parse(text = - col_edad)) - / 3.156e+7), - 3))) - return(data_event_years) + stopifnot( + "El parametro col_uni_med debe ser una cadena de caracteres" = + is.character(col_uni_med), + "El parametro uni_med debe ser numerico o una cadena de + caracteres" = + (is.numeric(uni_med) && !is.character(uni_med)) || + (!is.numeric(uni_med) && is.character(uni_med)) + ) + data_event[[col_uni_med]] <- as.numeric(data_event[[col_uni_med]]) + data_event[[col_edad]] <- as.numeric(data_event[[col_edad]]) + if (is.character(uni_med)) { + uni_med <- is.numeric(uni_med) + } + data_event_uni_med <- NULL + if (uni_med == 1) { + data_event_uni_med <- + dplyr::mutate( + data_event, + {{ col_edad }} := dplyr::case_when( + .data[[col_uni_med]] == 1 ~ round(.data[[col_edad]], 3), + .data[[col_uni_med]] == 2 ~ round(.data[[col_edad]] / 12, 3), + .data[[col_uni_med]] == 3 ~ round(.data[[col_edad]] / 876, 3), + .data[[col_uni_med]] == 4 ~ round(.data[[col_edad]] / 525960, 3), + .data[[col_uni_med]] == 5 ~ round(.data[[col_edad]] / 3.156e+7, 3) + ) + ) + } else if (uni_med == 2) { + data_event_uni_med <- + dplyr::mutate( + data_event, + {{ col_edad }} := dplyr::case_when( + .data[[col_uni_med]] == 1 ~ round(.data[[col_edad]] * 12, 3), + .data[[col_uni_med]] == 2 ~ round(.data[[col_edad]], 3), + .data[[col_uni_med]] == 3 ~ round(.data[[col_edad]] / 30, 3), + .data[[col_uni_med]] == 4 ~ round(.data[[col_edad]] / 730.5, 3), + .data[[col_uni_med]] == 5 ~ round(.data[[col_edad]] / 43830, 3) + ) + ) + } else if (uni_med == 3) { + data_event_uni_med <- + dplyr::mutate( + data_event, + {{ col_edad }} := dplyr::case_when( + .data[[col_uni_med]] == 1 ~ round(.data[[col_edad]] * 365, 3), + .data[[col_uni_med]] == 2 ~ round(.data[[col_edad]] * 30, 3), + .data[[col_uni_med]] == 3 ~ round(.data[[col_edad]], 3), + .data[[col_uni_med]] == 4 ~ round(.data[[col_edad]] / 24, 3), + .data[[col_uni_med]] == 5 ~ round(.data[[col_edad]] / 1440, 3) + ) + ) + } else if (uni_med == 4) { + data_event_uni_med <- + dplyr::mutate( + data_event, + {{ col_edad }} := dplyr::case_when( + .data[[col_uni_med]] == 1 ~ round(.data[[col_edad]] * 365 * 24, 3), + .data[[col_uni_med]] == 2 ~ round(.data[[col_edad]] * 30 * 24, 3), + .data[[col_uni_med]] == 3 ~ round(.data[[col_edad]] * 24, 3), + .data[[col_uni_med]] == 4 ~ round(.data[[col_edad]], 3), + .data[[col_uni_med]] == 5 ~ round(.data[[col_edad]] / 60, 3) + ) + ) + } else if (uni_med == 5) { + data_event_uni_med <- + dplyr::mutate( + data_event, + {{ col_edad }} := dplyr::case_when( + .data[[col_uni_med]] == 1 ~ + round(.data[[col_edad]] * 365 * 24 * 60, 3), + .data[[col_uni_med]] == 2 ~ + round(.data[[col_edad]] * 30 * 24 * 60, 3), + .data[[col_uni_med]] == 3 ~ round(.data[[col_edad]] * 24 * 60, 3), + .data[[col_uni_med]] == 4 ~ round(.data[[col_edad]] * 60, 3), + .data[[col_uni_med]] == 5 ~ round(.data[[col_edad]], 3) + ) + ) + } + return(data_event_uni_med) } #' @title Eliminar valores NIN (NA, Infinito, NaN) @@ -106,15 +173,10 @@ convert_edad <- function(data_event, #' @keywords internal remove_val_nin <- function(data_event, nomb_col) { validar_data_event(data_event) - stopifnot("El parametro nomb_col es obligatorio" = !missing(nomb_col), - "El parametro nomb_col debe ser una cadena de caracteres" = - is.character(nomb_col)) - ref_col <- paste0("data_event$", nomb_col) - data_event_del <- data_event - del_rows <- is.na(eval(parse(text = ref_col))) | - is.nan(eval(parse(text = ref_col))) | - is.infinite(eval(parse(text = ref_col))) - if (any(del_rows)) data_event_del <- data_event[!del_rows] + del_rows <- is.na(data_event[[nomb_col]]) | + is.nan(data_event[[nomb_col]]) | + is.infinite(data_event[[nomb_col]]) + data_event_del <- data_event[!del_rows] return(data_event_del) } @@ -136,10 +198,6 @@ remove_error_fecha <- function(data_event, col_ini = "ini_sin", col_comp = "fec_hos") { validar_data_event(data_event) - stopifnot("El parametro col_ini debe ser una cadena de caracteres" = - is.character(col_ini), - "El parametro col_comp debe ser una cadena de caracteres" = - is.character(col_comp)) del_rows <- which(data_event[[col_comp]] <= data_event[[col_ini]]) data_event_del <- data_event[-del_rows, ] return(data_event_del) @@ -152,9 +210,9 @@ remove_error_fecha <- function(data_event, #' @param format_fecha Un `character` (cadena de caracteres) #' que contiene el formato deseado de la fecha; su valor por #' defecto es `"\%Y-\%m-\%d"`. -#' @param nomb_cols Un `character` (cadena de caracteres) que -#' contiene los nombres de la columna a formatear en los datos de -#' una enfermedad o evento; su valor por defecto es `NULL`. +#' @param nomb_cols Un `character` (cadena de caracteres) o `array` de +#' `character` que contiene los nombres de la columnas a formatear en +#' los datos de una enfermedad o evento; su valor por defecto es `NULL`. #' @return Un `data.frame` con los datos con las fechas formateadas. #' @keywords internal format_fecha <- function(data_event, @@ -162,35 +220,26 @@ format_fecha <- function(data_event, nomb_cols = NULL) { validar_data_event(data_event) validar_format_fecha(format_fecha) - stopifnot("El parametro nomb_cols no debe estar vacio" = - !is.null(nomb_cols), - "El parametro nomb_cols debe ser una cadena de caracteres o - un arreglo de cadenas de caracteres" = - (is.character(nomb_cols) && !is.array(nomb_cols)) || - (!is.character(nomb_cols) && is.array(nomb_cols))) data_limpia <- data_event - if (!is.null(nomb_cols)) { - for (name in nomb_cols) { - if (!is.null(name)) { - data_limpia[[name]] <- as.Date(data_event[[name]], - format = format_fecha) - } - } + for (name in nomb_cols) { + data_limpia[[name]] <- as.Date(data_event[[name]], + format = format_fecha + ) } return(data_limpia) } #' @title Formatear c贸digo geogr谩fico #' @description Funci贸n que da el formato deseado a un c贸digo geogr谩fico. -#' @param cod_geo Un `numeric` (numerico) o `character` +#' @param cod_geo Un `numeric` (num茅rico) o `character` #' (cadena de caracteres) que contiene el c贸digo geogr谩fico. #' @param etiqueta Un `character` (cadena de caracteres) con el nombre #' de la etiqueta de la validaci贸n relacionada a la longitud m谩xima del #' c贸digo geogr谩fico; se refiere al tipo de divisi贸n geogr谩fica ("municipio", #' "departamento"). -#' @param digitos Un `numeric` (numerico) que contiende el n煤mero de digitos +#' @param digitos Un `numeric` (num茅rico) que contiene el n煤mero de digitos #' que debe tener individualmente el c贸digo geogr谩fico. -#' @param tam Un `numeric` (numerico) que contiende el tama帽o o la longitud +#' @param tam Un `numeric` (num茅rico) que contiende el tama帽o o la longitud #' m谩xima que debe tener el c贸digo geogr谩fico. #' @return Un `character` (cadena de caracteres) con el c贸digo geogr谩fico #' formateado. @@ -198,15 +247,17 @@ format_fecha <- function(data_event, format_cod_geo <- function(cod_geo, etiqueta, digitos, tam) { cod_format <- NULL if (is.numeric(cod_geo) || - !is.na(suppressWarnings(as.numeric(cod_geo)))) { + !is.na(suppressWarnings(as.numeric(cod_geo)))) { cod_format <- formatC(cod_geo, - width = digitos, - format = "d", - flag = "0") - etiqueta <- paste0("El codigo del ", etiqueta, - " debe tener maximo ", tam, " digitos") + width = digitos, + format = "d", + flag = "0" + ) if (nchar(cod_geo) > tam) { - stop(etiqueta) + stop( + "El codigo del ", etiqueta, + " debe tener maximo ", tam, " digitos" + ) } if (nchar(cod_format) == tam - 1) { cod_format <- paste0("0", cod_format) @@ -221,7 +272,7 @@ format_cod_geo <- function(cod_geo, etiqueta, digitos, tam) { #' @param data_event Un `data.frame` que contiene los datos de una #' enfermedad o evento. #' @return Un `data.frame` con las etiquetas del encabezado formateadas -#' con gui贸n bajo (_). +#' con guiones bajos (_). #' @examples #' data(dengue2020) #' limpiar_encabezado(data_event = dengue2020) @@ -237,7 +288,7 @@ limpiar_encabezado <- function(data_event) { #' de una enfermedad o evento. #' @param data_event Un `data.frame` que contiene los datos de #' una enfermedad o evento. -#' @param year Un `numeric` (numerico) o `character` (cadena de caracteres) +#' @param year Un `numeric` (num茅rico) o `character` (cadena de caracteres) #' que contiene el a帽o de los datos de una enfermedad o evento. #' @param format_fecha Un `character` (cadena de caracteres) que contiene #' el formato deseado de fecha; su valor por defecto es "\%AAAA-\%MM-\%DD". @@ -245,17 +296,19 @@ limpiar_encabezado <- function(data_event) { #' el nombre de la columna con la fecha que se desea limpiar en los datos #' de la enfermedad o evento. #' @param col_comp Un `character` (cadena de caracteres) que contiene el -#' nombre de la columna con la cual se va a comparar la columna `nomb_col` +#' nombre de la columna con la cual se va a comparar la columna `col_fecha` #' para limpiarla, estandarizarla o aplicar las reglas definidas. #' @return Un `data.frame` con las fechas limpias. #' @examples #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -#' limpiar_fecha_event(data_event = data_limpia, -#' year = 2020, -#' format_fecha = "%Y-%m-%d", -#' col_fecha = "ini_sin", -#' col_comp = "fec_hos") +#' limpiar_fecha_event( +#' data_event = data_limpia, +#' year = 2020, +#' format_fecha = "%Y-%m-%d", +#' col_fecha = "ini_sin", +#' col_comp = "fec_hos" +#' ) #' @export limpiar_fecha_event <- function(data_event, year, @@ -263,41 +316,52 @@ limpiar_fecha_event <- function(data_event, col_fecha = "ini_sin", col_comp = NULL) { validar_data_event(data_event) - stopifnot("El parametro year es obligatorio" = !missing(year), - "El parametro year debe ser una cadena de caracteres + stopifnot( + "El parametro year es obligatorio" = !missing(year), + "El parametro year debe ser una cadena de caracteres o numerico" = - (is.numeric(year) && !is.character(year)) || - (!is.numeric(year) && is.character(year)), - "El parametro col_fecha debe ser una cadena de caracteres" = - is.character(col_fecha)) + (is.numeric(year) && !is.character(year)) || + (!is.numeric(year) && is.character(year)), + "El parametro col_fecha debe ser una cadena de caracteres" = + is.character(col_fecha) + ) validar_format_fecha(format_fecha) data_event_fecha_ini <- data_event if (!is.null(col_comp)) { + stopifnot( + "El parametro col_comp debe ser una cadena de caracteres" = + is.character(col_comp) + ) data_event_fecha_ini <- - remove_error_fecha(data_event_fecha_ini, - col_fecha, - col_comp) - stopifnot("El parametro col_comp debe ser una cadena de caracteres" = - is.character(col_comp)) + remove_error_fecha( + data_event_fecha_ini, + col_fecha, + col_comp + ) } data_event_fecha_ini[order(data_event_fecha_ini[[col_fecha]], - decreasing = TRUE), ] + decreasing = TRUE + ), ] data_event_fecha_ini <- - data_event_fecha_ini[format(data_event_fecha_ini[[col_fecha]], - "%Y") == year, ] + data_event_fecha_ini[format( + data_event_fecha_ini[[col_fecha]], + "%Y" + ) == year, ] return(data_event_fecha_ini) } #' @title Limpiar las edades de los datos de una enfermedad o evento #' @description Funci贸n que limpia y estandariza las edades de los datos -#' de una enfermedad o evento, conviertiendolas en a帽os, seg煤n la +#' de una enfermedad o evento, convirti茅ndolas en a帽os, seg煤n la #' clasificaci贸n del Instituto Nacional de Salud: -#' No aplica = 0 -#' A帽os = 1 -#' Meses = 2 -#' D铆as = 3 -#' Horas = 4 -#' Minutos = 5. +#' \itemize{ +#' \item No aplica = 0 +#' \item A帽os = 1 +#' \item Meses = 2 +#' \item D铆as = 3 +#' \item Horas = 4 +#' \item Minutos = 5 +#' } #' @param data_event Un `data.frame` que contiene los datos de una #' enfermedad o evento. #' @param col_edad Un `character` (cadena de caracteres) con @@ -314,19 +378,20 @@ limpiar_edad_event <- function(data_event, col_edad = "edad") { validar_data_event(data_event) validar_edad(data_event, col_edad) data_event_years <- convert_edad(data_event) - data_event_years <- remove_val_nin(data_event_years, col_edad) + return(data_event_years) } -#' @title Limpiar los valores atipicos de los datos -#' @description Funci贸n que limpia los valores atipicos de los datos +#' @title Limpiar los valores at铆picos de los datos +#' @description Funci贸n que limpia los valores at铆picos de los datos #' de una enfermedad o evento del SIVIGILA. #' @param data_event Un `data.frame` que contiene los datos de una #' enfermedad o evento. #' @return Un `data.frame` con los datos de una enfermedad o -#' evento con los valores at铆picos limpios (NA). +#' evento con los valores at铆picos limpios (convertidos a `NA`). #' @examples #' data(dengue2020) #' data_limpia <- limpiar_encabezado(data_event = dengue2020) +#' limpiar_val_atipic(data_limpia) #' @export limpiar_val_atipic <- function(data_event) { validar_data_event(data_event) @@ -339,7 +404,7 @@ limpiar_val_atipic <- function(data_event) { cols <- event[as.character(cod_event)] for (nom_cols in cols) { for (col in nom_cols) { - data_event[eval(parse(text = col))] <- NA + data_event[, col] <- NA } } } @@ -349,33 +414,51 @@ limpiar_val_atipic <- function(data_event) { #' @title Limpiar datos de SIVIGILA #' @description Funci贸n que limpia los datos seleccionados de una enfermedad -#' o evento de la fuente SIVIGILA. +#' o evento provenientes de la fuente SIVIGILA. #' @param data_event Un `data.frame` que contiene los datos de #' una enfermedad o evento. +#' @param uni_med_edad Un `numeric` (num茅rico) o `character`(cadena de +#' caracteres) que contiene la unidad de medida a la que se debe estandarizar +#' la edad; su valor por defecto es `1`. #' @return Un `data.frame` con los datos limpios de la enfermedad o evento. #' @examples #' data(dengue2020) #' limpiar_data_sivigila(data_event = dengue2020) #' @export -limpiar_data_sivigila <- function(data_event) { +limpiar_data_sivigila <- function(data_event, + uni_med_edad = 1) { validar_data_event(data_event) data_event <- limpiar_encabezado(data_event) nom_cols_fechas <- obtener_val_config("dates_column_names") - year <- names(sort(table(data_event$ano), decreasing = TRUE)[1]) + years <- names(sort(table(data_event$ano), decreasing = TRUE)) + nom_cols_fechas <- + nom_cols_fechas[which(nom_cols_fechas %in% names(data_event))] data_limpia <- format_fecha(data_event, - nomb_cols = nom_cols_fechas) - nombre <- unique(data_event$nombre_evento) + nomb_cols = nom_cols_fechas + ) + nombre <- unique(data_event$nombre_evento[!is.na(data_event$nombre_evento)]) if (length(nombre) == 1 && - !stringr::str_detect(nombre, stringr::fixed("MORTALIDAD"))) { - data_limpia <- limpiar_fecha_event(data_limpia, year, - col_fecha = nom_cols_fechas[3], - col_comp = nom_cols_fechas[4]) - data_limpia <- limpiar_fecha_event(data_limpia, year, - col_fecha = nom_cols_fechas[2]) + !stringr::str_detect(nombre, stringr::fixed("MORTALIDAD")) && + length(years) == 1) { + data_limpia <- limpiar_fecha_event(data_limpia, + years, + col_fecha = nom_cols_fechas[2] + ) } + nomb_cols <- names(data_limpia) data_limpia <- estandarizar_geo_cods(data_limpia) - data_limpia <- convert_edad(data_limpia, - col_edad = "edad", - col_uni_med = "uni_med") + if ("edad" %in% nomb_cols && + "uni_med" %in% nomb_cols) { + if (!is.null(uni_med_edad)) { + data_limpia <- convert_edad(data_limpia, + col_edad = "edad", + col_uni_med = "uni_med", + uni_med = uni_med_edad + ) + } else { + data_limpia[["edad"]] <- as.numeric(data_limpia[["edad"]]) + data_limpia[["uni_med"]] <- as.numeric(data_limpia[["uni_med"]]) + } + } return(data_limpia) } diff --git a/R/dev-utils.R b/R/dev-utils.R new file mode 100644 index 00000000..d65bc287 --- /dev/null +++ b/R/dev-utils.R @@ -0,0 +1,9 @@ +# This unexported function adds a custom item to `usethis::use_release_issue()` +release_bullets <- function() { + c( + "Run `goodpractice::gp()`", + "Review [WORDLIST](https://docs.cran.dev/spelling#wordlist)", + "Check if `# nolint` comments are still needed with recent lintr releases", + "All contributors to this release are acknowledged in some way" + ) +} diff --git a/R/handler_validations.R b/R/handler_validations.R index ad927d5b..fd177c9b 100644 --- a/R/handler_validations.R +++ b/R/handler_validations.R @@ -1,61 +1,66 @@ -#' @title Validar p谩rametro `data_event` +#' @title Validar par谩metro `data_event` #' @description Funci贸n que realiza las validaciones correspondientes -#' del p谩rametro `data_event`. +#' del par谩metro `data_event`. #' @param data_event Un `data.frame` que contiene los datos de #' una enfermedad o evento. #' @noRd validar_data_event <- function(data_event) { - stopifnot("El parametro data_event es obligatorio" = !missing(data_event), - "El parametro data_event debe ser un data.frame" = - is.data.frame(data_event), - "El parametro data_event no debe estar vacio" = - nrow(data_event) > 0) + stopifnot( + "El parametro data_event es obligatorio" = !missing(data_event), + "El parametro data_event debe ser un data.frame" = + is.data.frame(data_event), + "El parametro data_event no debe estar vacio" = + nrow(data_event) > 0 + ) } -#' @title Validar p谩rametro `data_agrupada` +#' @title Validar par谩metro `data_agrupada` #' @description Funci贸n que realiza las validaciones correspondientes -#' del p谩rametro `data_agrupada`. +#' del par谩metro `data_agrupada`. #' @param data_agrupada Un `data.frame` que contiene los datos de la #' enfermedad o evento agrupados. #' @noRd validar_data_agrupada <- function(data_agrupada) { - stopifnot("El parametro data_agrupada es obligatorio" = - !missing(data_agrupada), - "El parametro data_agrupada debe ser un data.frame" = - is.data.frame(data_agrupada), - "El parametro data_agrupada no debe estar vacio" = - nrow(data_agrupada) > 0) + stopifnot( + "El parametro data_agrupada es obligatorio" = + !missing(data_agrupada), + "El parametro data_agrupada debe ser un data.frame" = + is.data.frame(data_agrupada), + "El parametro data_agrupada no debe estar vacio" = + nrow(data_agrupada) > 0 + ) } -#' @title Validar p谩rametro `nomb_cols` +#' @title Validar par谩metro `nomb_cols` #' @description Funci贸n que realiza las validaciones correspondientes -#' del p谩rametro `nomb_cols`. +#' del par谩metro `nomb_cols`. #' @param data_event Un `data.frame` que contiene los datos de #' una enfermedad o evento. -#' @param nomb_cols Un `character` (cadena de caracteres) o -#' `array (arreglo) de character` que contiene el nombre de +#' @param nomb_cols Un `character` (cadena de caracteres) o un +#' `array` (arreglo) de `character` que contiene el nombre de #' la(s) columna(s) en los datos de la enfermedad o evento. #' @noRd validar_nomb_cols <- function(data_event, nomb_cols) { - stopifnot("El parametro nomb_cols es obligatorio" - = !missing(nomb_cols), - "El parametro nomb_cols debe ser una cadena de caracteres - o un arreglo de cadenas de caracteres " - = (is.character(nomb_cols) && !is.array(nomb_cols)) || - (!is.character(nomb_cols) && is.array(nomb_cols)), - "La(s) columna(s) o variable(s) del parametro nomb_cols no + stopifnot( + "El parametro nomb_cols es obligatorio" = !missing(nomb_cols), + "El parametro nomb_cols debe ser una cadena de caracteres + o un arreglo de cadenas de caracteres " = + (is.character(nomb_cols) && !is.array(nomb_cols)) || + (!is.character(nomb_cols) && is.array(nomb_cols)), + "La(s) columna(s) o variable(s) del parametro nomb_cols no se encuentra(n) en los datos de la enfermedad o evento" = - nomb_cols %in% colnames(data_event)) + nomb_cols %in% colnames(data_event) + ) } -#' @title Validar los p谩rametros de la l贸gica de fecha de inicio de sintomas +#' @title Validar los par谩metros de la l贸gica de fecha de inicio de s铆ntomas #' @description Funci贸n que realiza las validaciones correspondientes a los -#' parametros relacionados a l贸gica y an谩lisis que se efectua sobre -#' la variable de fecha de inicio de sintoma. +#' par谩metros relacionados a l贸gica y an谩lisis que se efectua sobre +#' la variable de fecha de inicio de s铆ntomas. #' @param data_event Un `data.frame` que contiene los datos de una enfermedad #' o evento. #' @param uni_marca Un `character` (cadena de caracteres) que contiene -#' la unidad de las marcas del gr谩fico (`"dia"`, `"semanaepi"` y `"mes"``). +#' la unidad de las marcas del gr谩fico (`"dia"`, `"semanaepi"` y `"mes"`). #' @param col_fecha Un `character` (cadena de caracteres) que contiene el #' nombre de la columna con las fechas de notificaci贸n en los datos de la #' enfermedad o evento. @@ -63,137 +68,155 @@ validar_nomb_cols <- function(data_event, nomb_cols) { #' gr谩fico (`"barras"` o `"tendencia"`). #' @noRd validar_fecha_inisintomas <- function(data_event, col_fecha, - uni_marca, tipo) { - stopifnot("El parametro col_fecha debe ser una cadena de caracteres" = - is.character(col_fecha), - "La columna o variable del parametro col_fecha no + uni_marca, tipo) { + stopifnot( + "El parametro col_fecha debe ser una cadena de caracteres" = + is.character(col_fecha), + "La columna o variable del parametro col_fecha no se encuentra en los datos de la enfermedad o evento" = - col_fecha %in% colnames(data_event), - "El parametro uni_marca debe ser una cadena de caracteres" = - is.character(uni_marca), - "Valor invalido para el parametro uni_marca" = - uni_marca %in% c("dia", "semanaepi", "mes"), - "El parametro tipo debe ser una cadena de caracteres" = - is.character(tipo), - "Valor invalido para el parametro tipo" = - tipo %in% c("barras", "tendencia")) + col_fecha %in% colnames(data_event), + "El parametro uni_marca debe ser una cadena de caracteres" = + is.character(uni_marca), + "Valor invalido para el parametro uni_marca" = + uni_marca %in% c("dia", "semanaepi", "mes"), + "El parametro tipo debe ser una cadena de caracteres" = + is.character(tipo), + "Valor invalido para el parametro tipo" = + tipo %in% c("barras", "tendencia") + ) } -#' @title Validar p谩rametro `format_fecha` +#' @title Validar par谩metro `format_fecha` #' @description Funci贸n que realiza las validaciones correspondientes -#' del p谩rametro `format_fecha`. +#' del par谩metro `format_fecha`. #' @param format_fecha Un `character` (cadena de caracteres) -#' que contiene el formato deseado de la fecha. +#' que contiene el formato deseado de la fecha. #' @noRd validar_format_fecha <- function(format_fecha) { - stopifnot("El parametro format_fecha debe ser una cadena de caracteres" = - is.character(format_fecha)) + stopifnot( + "El parametro format_fecha debe ser una cadena de caracteres" = + is.character(format_fecha) + ) } -#' @title Validar p谩rametro `col_sex` +#' @title Validar par谩metro `col_sex` #' @description Funci贸n que realiza las validaciones correspondientes -#' del p谩rametro `col_sex`. +#' del par谩metro `col_sex`. #' @param data_event Un `data.frame` que contiene los datos de una enfermedad #' o evento. #' @param col_sex Un `character` (cadena de caracteres) con el nombre #' de la columna que contiene el sexo en los datos de la enfermedad o evento. #' @noRd validar_sex <- function(data_event, col_sex) { - stopifnot("El parametro col_sex debe ser una cadena de caracteres" = - is.character(col_sex), - "La columna o variable del parametro col_sex no + stopifnot( + "El parametro col_sex debe ser una cadena de caracteres" = + is.character(col_sex), + "La columna o variable del parametro col_sex no se encuentra en los datos de la enfermedad o evento" = - col_sex %in% colnames(data_event)) + col_sex %in% colnames(data_event) + ) } -#' @title Validar p谩rametro `porcentaje` +#' @title Validar par谩metro `porcentaje` #' @description Funci贸n que realiza las validaciones correspondientes -#' del p谩rametro `porcentaje`. -#' @param porcentaje Un `boolean` (TRUE o FALSE) que indica +#' del par谩metro `porcentaje`. +#' @param porcentaje Un `logical` (TRUE o FALSE) que indica #' si se debe agregar o tener una columna con el porcentaje de casos. #' @noRd validar_porcentaje <- function(porcentaje) { - stopifnot("El parametro porcentaje debe ser un booleano" = - is.logical(porcentaje)) + stopifnot( + "El parametro porcentaje debe ser un booleano" = + is.logical(porcentaje) + ) } -#' @title Validar p谩rametro `col_edad` +#' @title Validar par谩metro `col_edad` #' @description Funci贸n que realiza las validaciones correspondientes -#' del p谩rametro `col_edad`. +#' del par谩metro `col_edad`. #' @param data_event Un `data.frame` que contiene los datos de una enfermedad #' o evento. #' @param col_edad Un `character` (cadena de caracteres) con el nombre de la -#' columna que contiene las edades en los datos de la enfermdedad o evento. +#' columna que contiene las edades en los datos de la enfermedad o evento. #' @noRd validar_edad <- function(data_event, col_edad) { - stopifnot("El parametro col_edad debe ser una cadena de caracteres" - = is.character(col_edad), - "La columna o variable del parametro col_edad no + stopifnot( + "El parametro col_edad debe ser una cadena de caracteres" = + is.character(col_edad), + "La columna o variable del parametro col_edad no se encuentra en los datos de la enfermedad o evento" = - col_edad %in% colnames(data_event)) + col_edad %in% colnames(data_event) + ) } -#' @title Validar p谩rametro `col_area` +#' @title Validar par谩metro `col_area` #' @description Funci贸n que realiza las validaciones correspondientes -#' del p谩rametro `col_area`. +#' del par谩metro `col_area`. #' @param data_event Un `data.frame` que contiene los datos de una enfermedad #' o evento. -#' @param col_area Un `character` (cadena de car谩cteres) con el nombre de -#' la columna con el 谩rea geografica en los datos de la enfermedad +#' @param col_area Un `character` (cadena de caracteres) con el nombre de +#' la columna con el 谩rea geogr谩fica en los datos de la enfermedad #' o evento. #' @noRd validar_area_geo <- function(data_event, col_area, porcentaje) { - stopifnot("El parametro col_area debe ser una cadena de caracteres" - = is.character(col_area), - "La columna o variable del parametro col_area no + stopifnot( + "El parametro col_area debe ser una cadena de caracteres" = + is.character(col_area), + "La columna o variable del parametro col_area no se encuentra en los datos de la enfermedad o evento" = - col_area %in% colnames(data_event)) + col_area %in% colnames(data_event) + ) } -#' @title Validar p谩rametro `col_year` +#' @title Validar par谩metro `col_year` #' @description Funci贸n que realiza las validaciones correspondientes -#' del p谩rametro `col_year`. +#' del par谩metro `col_year`. #' @param data_event Un `data.frame` que contiene los datos de una enfermedad #' o evento. -#' @param col_year Un `character` (cadena de car谩cteres) con el nombre de +#' @param col_year Un `character` (cadena de caracteres) con el nombre de #' la columna que contiene el a帽o en los datos de la enfermedad o evento. #' @noRd validar_years <- function(data_event, col_year) { - stopifnot("El parametro col_year debe ser una cadena de caracteres" - = is.character(col_year), - "La columna o variable del parametro col_year no + stopifnot( + "El parametro col_year debe ser una cadena de caracteres" = + is.character(col_year), + "La columna o variable del parametro col_year no se encuentra en los datos de la enfermedad o evento" = - col_year %in% colnames(data_event)) + col_year %in% colnames(data_event) + ) } -#' @title Validar p谩rametro `cols_etn` +#' @title Validar par谩metro `cols_etn` #' @description Funci贸n que realiza las validaciones correspondientes -#' del p谩rametro `cols_etn`. +#' del par谩metro `cols_etn`. #' @param data_event Un `data.frame` que contiene los datos de una enfermedad #' o evento. #' @param cols_etn Un `character` (cadena de caracteres) con el nombre de -#' las columna(s) que contiene(n) la pertenencia 茅tnica en los datos de la +#' la(s) columna(s) que contiene(n) la pertenencia 茅tnica en los datos de la #' enfermedad o evento. #' @noRd validar_per_etn <- function(data_event, cols_etn) { - stopifnot("El parametro cols_etn debe ser una cadena de caracteres" - = is.character(cols_etn), - "La(s) columna(s) o variable(s) del parametro cols_etn no + stopifnot( + "El parametro cols_etn debe ser una cadena de caracteres" = + is.character(cols_etn), + "La(s) columna(s) o variable(s) del parametro cols_etn no se encuentra(n) en los datos de la enfermedad o evento" = - cols_etn %in% colnames(data_event)) + cols_etn %in% colnames(data_event) + ) } -#' @title Validar p谩rametro `data_incidencia` +#' @title Validar par谩metro `data_incidencia` #' @description Funci贸n que realiza las validaciones correspondientes -#' del p谩rametro `data_incidencia`. -#' @param data_incidencia Un `data.frame` que contiene la proyecciones +#' del par谩metro `data_incidencia`. +#' @param data_incidencia Un `data.frame` que contiene las proyecciones #' poblacionales del DANE o las poblaciones a riesgo de la enfermedad #' o evento. #' @noRd validar_data_incidencia <- function(data_incidencia) { - stopifnot("El parametro data_incidencia debe ser un data.frame" = - is.data.frame(data_incidencia), - "El parametro data_incidencia no debe estar vacio" = - nrow(data_incidencia) > 0) + stopifnot( + "El parametro data_incidencia debe ser un data.frame" = + is.data.frame(data_incidencia), + "El parametro data_incidencia no debe estar vacio" = + nrow(data_incidencia) > 0 + ) } diff --git a/R/import_data.R b/R/import_data.R index a7904e0d..f5ea7380 100644 --- a/R/import_data.R +++ b/R/import_data.R @@ -1,9 +1,9 @@ #' @title Realizar petici贸n HTTP -#' @description Funci贸n que gestiona las peticiones HTTP al API del +#' @description Funci贸n que gestiona las peticiones HTTP a la API del #' SIVIGILA. -#' @param url La direcci贸n HTTP desde donde descargar la informaci贸n. +#' @param url La direcci贸n HTTP desde donde se descargar谩 la informaci贸n. #' @return Si la petici贸n es exitosa, retorna una respuesta HTTP. -#' De lo contrario arroja un mensaje de error explicando el problema +#' De lo contrario, arroja un mensaje de error explicando el problema #' y finaliza la ejecuci贸n del programa. #' @examples #' \donttest{ @@ -47,16 +47,15 @@ realizar_peticion_http <- function(url) { #' @title Importar datos geogr谩ficos de Colombia #' @description Funci贸n que importa los nombres y c贸digos de #' los departamentos y municipios de Colombia a trav茅s de una URL. -#' @param descargar Un `boolean` (`TRUE` o `FALSE`) que indica si los -#' datos se deben descargar desde la API de datos abiertos; su valor por -#' defecto es `FALSE`. +#' @param descargar Un `logical` (`TRUE` o `FALSE`) que indica si los +#' datos deben descargarse desde la API de datos abiertos de Colombia; +#' su valor por defecto es `FALSE`. #' @return Un `data.frame` con los nombres y c贸digos de los departamentos #' y municipios de Colombia. #' @examples #' import_geo_cods(descargar = FALSE) #' @export import_geo_cods <- function(descargar = FALSE) { - data_geo <- NULL stopifnot("El parametro descargar debe ser un booleano" = is.logical(descargar)) if (descargar) { @@ -64,17 +63,15 @@ import_geo_cods <- function(descargar = FALSE) { data_geo <- utils::read.csv(ruta_data) names(data_geo) <- epitrix::clean_labels(names(data_geo)) } else { - divipoladata <- NULL ruta_extdata <- system.file("extdata", package = "sivirep") ruta_data <- obtener_val_config("divipola_data_path") - load(file.path(ruta_extdata, ruta_data)) - data_geo <- divipoladata + data_geo <- readRDS(file.path(ruta_extdata, ruta_data)) } return(data_geo) } -#' @title Importar las enfermedades y a帽os disponibles disposibles -#' para su descarga desde los microdatos del SIVIGILA +#' @title Importar enfermedades y a帽os disponibles para +#' su descarga desde los microdatos del SIVIGILA #' @description Funci贸n que obtiene las enfermedades y los a帽os #' disponibles para su descarga desde los microdatos del SIVIGILA. #' @return Una `list` con las enfermedades y los a帽os disponibles @@ -103,13 +100,13 @@ list_events <- function() { text_children <- text_children[-base::seq(3, length(text_children), 3)] while (i < base::length(children)) { event <- xml2::xml_text(children[i]) - nomb_events <- base::append(nomb_events, event) + nomb_events <- c(nomb_events, event) events <- base::which(text_children == event) years <- events - 1 years_events <- - base::append(years_events, - base::toString(base::sort(text_children[years], - decreasing = FALSE))) + c(years_events, + base::toString(base::sort(text_children[years], + decreasing = FALSE))) children <- children[-years] text_children <- text_children[-(events - 1)] children <- children[-base::which(text_children == event)] @@ -117,9 +114,16 @@ list_events <- function() { i <- i + 2 } events_adicionales <- obtener_val_config("additional_diseases") - nomb_events <- base::append(stringr::str_to_title(nomb_events), - events_adicionales) - years_events <- base::append(years_events, c("", "", "")) + nomb_events_ad <- list() + years_ad <- list() + for (adicional in events_adicionales) { + nomb_events_ad[[length(nomb_events_ad) + 1]] <- adicional$event + years_ad[[length(years_ad) + 1]] <- toString(seq(adicional$start_year, + adicional$final_year)) + } + nomb_events <- c(stringr::str_to_title(nomb_events), + unlist(nomb_events_ad)) + years_events <- c(years_events, unlist(years_ad)) list_events <- data.frame(enfermedad = nomb_events, aa = years_events) list_events <- list_events[order(list_events$enfermedad, @@ -133,10 +137,14 @@ list_events <- function() { #' a帽o desde los microdatos del SIVIGILA. #' @param nombre_event Un `character` (cadena de caracteres) con el nombre de #' la enfermedad o evento. -#' @param years Un `numeric` (numerico) con el a帽o o a帽os deseado(s) para +#' @param years Un `numeric` (num茅rico) con el a帽o o a帽os deseado(s) para #' la descarga de los datos. -#' @param cache Un `boolean` (`TRUE` o `FALSE`) que indica si los datos -#' descargados deben ser almacenados en cach茅; su valor por defecto es `TRUE`. +#' @param ruta_dir Un `character` (cadena de caracteres) que contiene la ruta +#' del directorio donde se almacenar谩n los datos del evento o enfermedad. +#' Su valor por defecto es `NULL`. +#' @param cache Un `logical` (`TRUE` o `FALSE`) que indica si los datos +#' descargados deben ser almacenados en cach茅. Su valor por defecto +#' es `FALSE`. #' @return Un `data.frame` con los datos del a帽o de la enfermedad o evento #' seleccionado desde los microdatos del SIVIGILA. #' @examples @@ -146,17 +154,18 @@ list_events <- function() { #' cache = TRUE) #' } #' \donttest{ -#' import_data_event(nombre_event = "ZIKA", +#' import_data_event(nombre_event = "CHAGAS", #' years = c(2019, 2020), #' cache = TRUE) -#' import_data_event(nombre_event = "ZIKA", +#' import_data_event(nombre_event = "CHAGAS", #' years = seq(2018, 2020), #' cache = TRUE) #' } #' @export import_data_event <- function(nombre_event, years, - cache = TRUE) { + ruta_dir = NULL, + cache = FALSE) { stopifnot("El parametro years no debe estar vacio" = !missing(years), "El parametro years debe ser numerico" = is.numeric(years), "El parametro nombre_event no debe estar vacio" @@ -165,53 +174,83 @@ import_data_event <- function(nombre_event, = is.character(nombre_event), "El parametro cache debe ser un booleano" = is.logical(cache)) - data_event <- data.frame() + data_event <- list() nombre_event <- stringr::str_to_title(nombre_event) cols_remover <- obtener_val_config("cols_remover") grupo_events <- obtener_eventos_relacionados(nombre_event, years) + eventos_disponibles <- list_events() + if (toupper(nombre_event) == "MALARIA") { + grupo_events <- + grupo_events[-which(grupo_events$enfermedad == nombre_event), ] + eventos_disponibles <- + eventos_disponibles[-which(eventos_disponibles$enfermedad + == nombre_event), ] + } for (year in years) { for (event in grupo_events$enfermedad) { - if (event != "Malaria") { - data_url <- obtener_ruta_data_event_year(nombre_event = event, - year = year) - data_import <- import_sep_data(data_url, cache) - data_import <- limpiar_encabezado(data_import) + pos_event <- which(eventos_disponibles$enfermedad + == event) + if (length(pos_event) > 0 && + !stringr::str_detect( + eventos_disponibles[pos_event, ]$aa, + as.character(year) + )) { + warning("El year: ", year, + " de la enfermedad o evento: ", + event, + " no esta disponible para su descarga", + call. = FALSE + ) + next + } + data_url <- obtener_ruta_data_event_year(nombre_event = event, + year = year) + data_import <- import_sep_data(ruta_data = data_url, + ruta_dir = ruta_dir, + cache = cache) + data_import <- limpiar_encabezado(data_import) + if ("fec_def" %in% names(data_import)) { data_import$fec_def <- as.character(data_import$fec_def) + } + nombre_cols <- names(data_import) + indice_cols_eve <- which(stringr::str_detect(nombre_cols, + stringr::fixed("cod_eve_"))) + if (length(indice_cols_eve) != 0) { + names(data_import)[indice_cols_eve[1]] <- "cod_eve" + indice_cols_eve[1] <- indice_cols_eve[-1] + data_import <- + data_import[, -indice_cols_eve] nombre_cols <- names(data_import) - indice_cols_eve <- which(stringr::str_detect(nombre_cols, - stringr::fixed("cod_eve_"))) - if (!identical(indice_cols_eve, - integer(0))) { - names(data_import)[indice_cols_eve[1]] <- "cod_eve" - indice_cols_eve[1] <- indice_cols_eve[-1] - data_import <- - data_import[, -indice_cols_eve] - nombre_cols <- names(data_import) - } - nombre_cols <- nombre_cols[-which(nombre_cols %in% cols_remover)] - data_event <- rbind(data_event, data_import[, nombre_cols]) } + indices_cols_remov <- which(nombre_cols %in% cols_remover) + if (length(indices_cols_remov) != 0) { + nombre_cols <- nombre_cols[-indices_cols_remov] + } + data_event <- c(data_event, list(data_import[, nombre_cols])) } } + data_event <- dplyr::bind_rows(data_event) return(data_event) } -#' @title Importar datos con un separador espec铆fico. +#' @title Importar datos con un separador espec铆fico #' @description Funci贸n que importa e identifica el separador que tiene los #' datos para tabularlos. #' @param ruta_data Un `character` (cadena de caracteres) que contiene #' la URL de los datos de SIVIGILA. -#' @param cache Un `boolean` (`TRUE` o `FALSE`) que indica si los datos. -#' descargados deben ser almacenados en cach茅; su valor por defecto es `TRUE`. +#' @inheritParams import_data_event #' @return Un `data.frame` con los datos tabulados. #' @keywords internal -import_sep_data <- function(ruta_data = NULL, cache = TRUE) { - stopifnot("El parametro ruta_data debe ser una cadena de caracteres" = - is.character(ruta_data), - "El parametro cache debe ser un booleano" - = is.logical(cache)) +import_sep_data <- function(ruta_data = NULL, + ruta_dir = NULL, + cache = FALSE) { data_archivo <- data.frame() - ruta_extdata <- system.file("extdata", package = "sivirep") + ruta_dir <- + obtener_ruta_dir(ruta_dir, + "los datos de la enfermedad o evento") + if (!dir.exists(ruta_dir)) { + stop("La ruta ingresada en el parametro ruta_dir no existe") + } if (!is.null(ruta_data)) { ini_nomb_archivo <- stringr::str_locate(ruta_data, @@ -220,7 +259,7 @@ import_sep_data <- function(ruta_data = NULL, cache = TRUE) { stringr::str_locate(ruta_data, stringr::fixed("value"))[1] - 5 nomb_archivo <- stringr::str_sub(ruta_data, ini_nomb_archivo, fin_nomb_archivo) - ruta_archivo <- file.path(ruta_extdata, nomb_archivo) + ruta_archivo <- file.path(ruta_dir, nomb_archivo) if (!file.exists(ruta_archivo) || !cache) { respuesta_archivo <- realizar_peticion_http(ruta_data) if (httr2::resp_status(respuesta_archivo) == 200) { @@ -235,6 +274,9 @@ import_sep_data <- function(ruta_data = NULL, cache = TRUE) { if (stringr::str_detect(nomb_archivo, ".xls")) { data_archivo <- readxl::read_excel(ruta_archivo, col_types = "text") + if (!cache) { + file.remove(ruta_archivo) + } } } return(data_archivo) @@ -245,16 +287,22 @@ import_sep_data <- function(ruta_data = NULL, cache = TRUE) { #' enfermedad o las proyecciones poblacionales DANE desde el a帽o 2005 hasta #' el 2035. #' @param poblacion Un `character` (cadena de caracteres) con el tipo de -#' poblaci贸n que se desea importar. Indica si se desea descargar la poblaci贸n -#' a riesgo del evento `"riesgo"` o las proyecciones poblacionales DANE -#' `"proyecciones"`; su valor por defecto es `"riesgo"`. -#' @param event Un `character` (cadena de caracteres) o un `numeric` (numerico) +#' poblaci贸n que se desea importar. Puede ser `"riesgo"` para la poblaci贸n +#' a riesgo del evento o `"proyecciones"` para las proyecciones poblacionales +#' DANE; su valor por defecto es `"riesgo"`. +#' @param event Un `character` (cadena de caracteres) o un `numeric` (num茅rico) #' con el nombre o c贸digo de la enfermedad o evento. Es obligatorio para #' importar la poblaci贸n a riesgo. -#' @param year Un `numeric` (numerico) con el a帽o deseado de la poblaci贸n a +#' @param year Un `numeric` (num茅rico) con el a帽o deseado de la poblaci贸n a #' riesgo. Es obligatorio para importar la poblaci贸n a riesgo. +#' @param ruta_dir Un `character` (cadena de caracteres) que especifica la ruta +#' del directorio donde se almacenar谩n la poblaci贸n a riesgo o las proyecciones +#' poblacionales DANE. Su valor por defecto es `NULL`. +#' @param cache Un `logical` (`TRUE` o `FALSE`) que indica si la poblaci贸n a +#' riesgo o las proyecciones poblacionales DANE descargadas deben ser +#' almacenados en cach茅. Su valor por defecto es `FALSE`. #' @return Un `data.frame` con la poblaci贸n a riesgo o las proyecciones -#' poblacionaldes DANE. +#' poblacionales DANE. #' @examples #' \donttest{ #' # Importaci贸n proyecciones poblaciones DANE @@ -263,14 +311,20 @@ import_sep_data <- function(ruta_data = NULL, cache = TRUE) { #' import_pob_incidencia(poblacion = "riesgo", event = "dengue", year = 2020) #' } #' @export -import_pob_incidencia <- function(poblacion = "riesgo", event, year) { +import_pob_incidencia <- function( + poblacion = c("riesgo", "proyecciones"), + event, + year, + ruta_dir = NULL, + cache = NULL + ) { stopifnot("El parametro poblacion no debe estar vacio" = !missing(poblacion), "El parametro poblacion debe ser una cadena de caracteres" = - is.character(poblacion), - "Valor invalido para el parametro poblacion" = - (poblacion %in% c("riesgo", "proyecciones"))) - if (poblacion == "proyecciones") { + is.character(poblacion)) + poblacion <- match.arg(poblacion) + + if (poblacion == "proyecciones") { poblacion <- import_pob_proyecciones(year = year) } else { poblacion <- import_pob_riesgo(event = event, year = year) @@ -281,55 +335,64 @@ import_pob_incidencia <- function(poblacion = "riesgo", event, year) { #' @title Importar las proyecciones DANE del a帽o 2005 hasta el 2035 #' @description Funci贸n que importa las proyecciones poblacionales #' DANE desde el a帽o 2005 hasta el 2035. -#' @param year Un `numeric` (numerico) con el a帽o a importar de las -#' proyecciones poblacionales DANE. +#' @param year Un `numeric` (num茅rico) con el a帽o de las proyecciones +#' poblacionales DANE que desea importar. +#' @inheritParams import_pob_incidencia #' @return Un `data.frame` con las proyecciones poblacionales DANE. #' @examples #' \donttest{ #' import_pob_proyecciones(year = 2020) #' } #' @export -import_pob_proyecciones <- function(year) { - proyecciones <- NULL - nomb_proyecs <- NULL +import_pob_proyecciones <- function(year, + ruta_dir = NULL, + cache = FALSE) { ruta_proyecciones <- obtener_val_config("projections_population") years_disp <- seq(ruta_proyecciones$start_year, ruta_proyecciones$final_year) - if (year %in% years_disp) { - nomb_proyecs <- - stringr::str_replace(ruta_proyecciones$file_name, - stringr::fixed("{year}"), + if (!year %in% years_disp) { + return(NULL) + } + nomb_proyecs <- + stringr::str_replace(ruta_proyecciones$file_name, + stringr::fixed("{year}"), + year) + ruta_dir <- + obtener_ruta_dir(ruta_dir, + "las proyeciones poblacionales DANE") + ruta_proyecs <- file.path(ruta_dir, + paste0(nomb_proyecs, + ruta_proyecciones$extension)) + if (!file.exists(ruta_proyecs)) { + url_proyecs <- + stringr::str_replace(ruta_proyecciones$url, stringr::fixed("{year}"), year) - ruta_extdata <- system.file("extdata", package = "sivirep") - ruta_proyecs <- file.path(ruta_extdata, - paste0(nomb_proyecs, - ruta_proyecciones$extension)) - if (!file.exists(ruta_proyecs)) { - url_proyecs <- - stringr::str_replace(ruta_proyecciones$url, stringr::fixed("{year}"), - year) - utils::download.file(url_proyecs, ruta_proyecs) - } - load(ruta_proyecs) - proyecciones <- eval(parse(text = nomb_proyecs)) + utils::download.file(url_proyecs, ruta_proyecs) + } + proyecciones <- readRDS(ruta_proyecs) + if (!cache) { + file.remove(ruta_proyecs) } return(proyecciones) } #' @title Importar la poblaci贸n a riesgo de un evento o enfermedad #' @description Funci贸n que importa la poblaci贸n a riesgo de un evento -#'o enfermedad de un a帽o espec铆fico. -#' @param event Un `character` (cadena de caracteres) o un `numeric` (numerico) +#'o enfermedad para un a帽o espec铆fico. +#' @param event Un `character` (cadena de caracteres) o un `numeric` (num茅rico) #' con el nombre o c贸digo de la enfermedad o evento. -#' @param year Un `numeric` (numerico) con el a帽o deseado de la poblaci贸n a +#' @param year Un `numeric` (num茅rico) con el a帽o deseado de la poblaci贸n a #' riesgo. +#' @inheritParams import_pob_incidencia #' @return Un `data.frame` con la poblaci贸n a riesgo de un a帽o espec铆fico. #' @examples #' \donttest{ #' import_pob_riesgo(event = "Dengue", year = 2020) #' } #' @export -import_pob_riesgo <- function(event, year) { +import_pob_riesgo <- function(event, year, + ruta_dir = NULL, + cache = FALSE) { stopifnot("El parametro event no debe estar vacio" = !missing(event), "El parametro event debe ser una cadena de caracteres" = @@ -339,7 +402,9 @@ import_pob_riesgo <- function(event, year) { rutas_pop_riesgo <- obtener_val_config("risk_population") etiqueta_year <- obtener_val_config("label_year") etiqueta_year <- paste0(tolower(etiqueta_year), "s") - ruta_extdata <- system.file("extdata", package = "sivirep") + ruta_dir <- + obtener_ruta_dir(ruta_dir, + "las poblaciones a riesgo") pop_event <- NULL years_disponibles <- NULL pob_riesgo_event <- NULL @@ -347,7 +412,7 @@ import_pob_riesgo <- function(event, year) { event_min <- tolower(event) for (pop_riesgo in rutas_pop_riesgo) { if (stringr::str_detect(event_min, pop_riesgo$event) || - stringr::str_detect(as.character(event_min), + stringr::str_detect(event_min, as.character(pop_riesgo$cod_eve))) { years_disponibles <- pop_riesgo$years if (year %in% pop_riesgo$years) { @@ -355,7 +420,7 @@ import_pob_riesgo <- function(event, year) { pop_event$file_name <- stringr::str_replace(pop_event$file_name, stringr::fixed("{year}"), year) - pop_event_ruta <- file.path(ruta_extdata, + pop_event_ruta <- file.path(ruta_dir, paste0(pop_event$file_name, pop_event$extension)) if (!file.exists(pop_event_ruta)) { @@ -368,14 +433,16 @@ import_pob_riesgo <- function(event, year) { } } } - if (!is.null(pop_event) && !is.null(pop_event_ruta)) { - load(pop_event_ruta) - pob_riesgo_event <- eval(parse(text = pop_event$file_name)) + if (!is.null(pop_event_ruta)) { + pob_riesgo_event <- readRDS(pop_event_ruta) + if (!cache) { + file.remove(pop_event_ruta) + } } else if (!is.null(years_disponibles)) { warning("Para el ", year, " la poblacion a riesgo no esta disponible.", " Los ", etiqueta_year, " disponibles para la enfermedad o ", "evento son: ", - toString(years_disponibles, collapse = ", ")) + toString(years_disponibles)) } else { warning("Para ", event, " no hay poblacion a riesgo disponible de ", "ningun year") @@ -385,24 +452,33 @@ import_pob_riesgo <- function(event, year) { #' @title Importar el Shapefile del mapa de Colombia #' @description Funci贸n que importa el Shapefile del mapa de Colombia. -#' @return Un objeto `sf` que contiene los elementos del shapefile +#' @param ruta_dir Un `character` (cadena de caracteres) que contiene la +#' ruta del directorio donde se almacenar谩 el Shapefile del mapa de +#' Colombia. Su valor por defecto es `NULL`. +#' @param cache Un `logical` (`TRUE` o `FALSE`) que indica si el Shapefile +#' del mapa de Colombia debe ser almacenado en cach茅. Su valor por defecto +#' es `FALSE`. +#' @return Un objeto `sf` que contiene los elementos del Shapefile #' del mapa. #' @keywords internal -import_shape_map <- function() { - ruta_extdata <- system.file("extdata", package = "sivirep") - archivo_config <- system.file("extdata", "config.yml", package = "sivirep") - archivo_zip <- config::get(file = archivo_config, "map_shape_zip_file") - ruta_zip <- file.path(ruta_extdata, archivo_zip) +import_shape_map <- function(ruta_dir = NULL, + cache = FALSE) { + ruta_dir <- obtener_ruta_dir(ruta_dir = ruta_dir, + "el Shapefile del mapa") + archivo_zip <- obtener_val_config("map_shape_zip_file") + ruta_zip <- file.path(ruta_dir, archivo_zip) if (!file.exists(ruta_zip)) { - url_base <- config::get(file = archivo_config, "map_shape_path") + url_base <- obtener_val_config("map_shape_path") utils::download.file(url_base, ruta_zip) - utils::unzip(zipfile = ruta_zip, exdir = ruta_extdata) + utils::unzip(zipfile = ruta_zip, exdir = ruta_dir) + } + carpeta_base <- obtener_val_config("map_shape_folder") + ruta_shape <- file.path(ruta_dir, carpeta_base, + obtener_val_config("map_shape_file")) + if (file.exists(ruta_shape)) { + shp <- sf::st_read(dsn = ruta_shape, quiet = TRUE) + } else { + stop("No es posible obtener el Shapefile del mapa") } - carpeta_base <- config::get(file = archivo_config, "map_shape_folder") - ruta_base <- file.path("extdata", carpeta_base, - config::get(file = archivo_config, "map_shape_file")) - dsn <- system.file(ruta_base, - package = "sivirep") - shp <- sf::st_read(dsn = dsn, quiet = TRUE) return(shp) } diff --git a/R/plotting.R b/R/plotting.R index 68e8b096..4603de93 100644 --- a/R/plotting.R +++ b/R/plotting.R @@ -4,12 +4,12 @@ #' @param data_agrupada Un `data.frame` que contiene los datos de la enfermedad #' agrupados por departamento y n煤mero de casos. #' @param col_distribucion Un `character` (cadena de caracteres) que contiene el -#' nombre de la columna que tiene los valores de la distribuci贸n, por n煤mero de -#' casos o incidencia; su valor por defecto es `"incidencia"`. +#' nombre de la columna que tiene los valores de la distribuci贸n, ya sea por +#' n煤mero de casos o incidencia; su valor por defecto es `"incidencia"`. #' @param col_codigos Un `character` (cadena de caracteres) que contiene el -#' nombre de la columna con los c贸digos de los departamentos o municipios, se -#' utilizan para obtener los poligonos de las 谩reas geogr谩ficas del archivo -#' geoespacial o de figuras (Shapefile); su valor por defecto `NULL`. +#' nombre de la columna con los c贸digos de los departamentos o municipios, los +#' cuales se utilizan para obtener los poligonos de las 谩reas geogr谩ficas del +#' archivo geoespacial o Shapefile; su valor por defecto `NULL`. #' @param fuente_data Un `character` (cadena de caracteres) que contiene la #' leyenda o fuente de informaci贸n de los datos de la enfermedad o evento; #' su valor por defecto `NULL`. @@ -17,8 +17,9 @@ #' nombre del departamento; su valor por defecto `NULL`. #' @param mpio Un `character` (cadena de caracteres) que contiene el #' nombre del municipio; su valor por defecto `NULL`. +#' @inheritParams import_shape_map #' @return Un `plot` o mapa por departamentos o municipios con el n煤mero de -#' casos o incidencia de una enfermedad espec铆fica. +#' casos o incidencia de un evento o enfermedad espec铆fica. #' @examples #' \dontrun{ #' data(dengue2020) @@ -26,31 +27,43 @@ #' data_estandar <- estandarizar_geo_cods(data_limpia) #' # Mapa por departamentos #' data_espacial <- agrupar_dpto(data_event = data_estandar) -#' plot_map(data_agrupada = data_espacial, -#' col_distribucion = "casos") +#' plot_map( +#' data_agrupada = data_espacial, +#' col_distribucion = "casos" +#' ) #' # Mapa por municipios de un departamento especifico -#' data_filtrada_dpto <- geo_filtro(data_event = data_estandar, -#' dpto = "Cundinamarca") +#' data_filtrada_dpto <- geo_filtro( +#' data_event = data_estandar, +#' dpto = "Cundinamarca" +#' ) #' data_espacial_dpto <- agrupar_mpio(data_event = data_filtrada_dpto) -#' plot_map(data_agrupada = data_espacial_dpto, -#' col_codigos = "cod_mun_o", -#' col_distribucion = "casos") +#' plot_map( +#' data_agrupada = data_espacial_dpto, +#' col_codigos = "cod_mun_o", +#' col_distribucion = "casos" +#' ) #' # Mapa por municipio especifico -#' data_filtrada_mpio <- geo_filtro(data_event = data_estandar, -#' dpto = "Antioquia", -#' mpio = "Medellin") +#' data_filtrada_mpio <- geo_filtro( +#' data_event = data_estandar, +#' dpto = "Antioquia", +#' mpio = "Medellin" +#' ) #' data_espacial_mpio <- agrupar_mpio(data_event = data_filtrada_mpio) -#' plot_map(data_agrupada = data_espacial_mpio, -#' col_codigos = "cod_mun_o", -#' col_distribucion = "casos", -#' dpto = "Antioquia", -#' mpio = "Medellin") +#' plot_map( +#' data_agrupada = data_espacial_mpio, +#' col_codigos = "cod_mun_o", +#' col_distribucion = "casos", +#' dpto = "Antioquia", +#' mpio = "Medellin" +#' ) #' # Mapa con la incidencia por municipios de un departamento espec铆fico #' incidencia_dpto <- -#' calcular_incidencia_geo(data_agrupada = data_espacial_dpto) -#' plot_map(data_agrupada = incidencia_dpto, -#' col_codigos = "cod_mun_o", -#' col_distribucion = "incidencia") +#' calcular_incidencia_geo(data_agrupada = data_espacial_dpto) +#' plot_map( +#' data_agrupada = incidencia_dpto$data_incidencia, +#' col_codigos = "cod_mun_o", +#' col_distribucion = "incidencia" +#' ) #' } #' @export plot_map <- function(data_agrupada, @@ -58,20 +71,24 @@ plot_map <- function(data_agrupada, col_codigos = NULL, fuente_data = NULL, dpto = NULL, - mpio = NULL) { + mpio = NULL, + ruta_dir = NULL, + cache = FALSE) { validar_data_agrupada(data_agrupada) titulo <- "Colombia" - subtitulo <- obtener_val_config("label_geo_analysis") + subtitulo <- obtener_val_config("label_geo_analysis") cols_geo_ocurrencia <- NULL nombres_col <- NULL pos_col <- NULL etiqueta_relleno <- "Casos" - shp <- import_shape_map() + shp <- import_shape_map(ruta_dir, cache) if (is.null(fuente_data)) { fuente_data <- "Fuente: SIVIGILA, Instituto Nacional de Salud, Colombia" } - stopifnot("El parametro fuente_data debe ser un cadena de caracteres" - = is.character(fuente_data)) + stopifnot( + "El parametro fuente_data debe ser un cadena de caracteres" = + is.character(fuente_data) + ) color_min <- "#fcebfc" if ("nombre_evento" %in% names(data_agrupada)) { nombre_events <- unique(data_agrupada$nombre_evento)[1] @@ -88,77 +105,117 @@ plot_map <- function(data_agrupada, etiqueta_relleno <- "Incidencia" cond_incidencia <- obtener_cond_inciden_event(cod_eve = data_agrupada$cod_eve[1]) - etiqueta_relleno <- paste0(etiqueta_relleno, " por \n", - as.integer(cond_incidencia$coeficiente), - " habitantes") + etiqueta_relleno <- paste0( + etiqueta_relleno, " por \n", + as.integer(cond_incidencia$coeficiente), + " habitantes" + ) } - config_map <- obtener_config_map(data_agrupada, dpto, mpio, - cols_geo_ocurrencia, shp) - pos_col <- which(colnames(data_agrupada) %in% - cols_geo_ocurrencia[1]) - nombres_col <- cols_geo_ocurrencia[2] + config_map <- obtener_config_map( + data_agrupada, dpto, mpio, + cols_geo_ocurrencia, shp + ) + pos_col <- + which(colnames(data_agrupada) %in% cols_geo_ocurrencia[3]) + nombres_col <- cols_geo_ocurrencia[4] if (!is.null(config_map$dpto)) { - titulo <- paste0("Departamento de ", - stringr::str_to_title(config_map$dpto)) + titulo <- paste0( + "Departamento de ", + stringr::str_to_title(config_map$dpto) + ) } if (!is.null(config_map$mpio)) { - titulo <- paste0(titulo, ", ", - stringr::str_to_title(config_map$mpio)) + titulo <- paste0( + titulo, ", ", + stringr::str_to_title(config_map$mpio) + ) color_min <- "#be0000" - pos_col <- which(colnames(data_agrupada) %in% - cols_geo_ocurrencia[3]) - nombres_col <- cols_geo_ocurrencia[4] } if (!is.null(col_codigos)) { colnames(data_agrupada)[colnames(data_agrupada) == - col_codigos] <- "id" + col_codigos] <- "id" } else if (length(pos_col) == 1) { - colnames(data_agrupada)[pos_col] <- "id" - col_codigos <- "id" + colnames(data_agrupada)[pos_col] <- "id" + col_codigos <- "id" } else { stop("Debe ingresar el nombre de la columna que contiene los codigos de los departamentos o municipios en el parametro col_codigos") } polygon_seleccionado <- config_map$poligono - data_agrupada <- group_by_at(data_agrupada, c("id", nombres_col)) - data_agrupada <- dplyr::summarise(data_agrupada, - casos = - sum(.data[[col_distribucion]]), - .groups = "drop") + data_agrupada <- dplyr::group_by( + data_agrupada, + dplyr::across(dplyr::all_of(c("id", nombres_col))) + ) + data_agrupada <- dplyr::summarise(data_agrupada, + casos = + sum(.data[[col_distribucion]]), + .groups = "drop" + ) data_agrupada <- data_agrupada[order(data_agrupada[["casos"]], - decreasing = FALSE), ] + decreasing = FALSE + ), ] polygon_seleccionado <- ggplot2::fortify(polygon_seleccionado, region = "id") polygon_seleccionado <- dplyr::left_join(polygon_seleccionado, - data_agrupada, by = "id") + data_agrupada, + by = "id" + ) polygon_seleccionado <- - cbind(polygon_seleccionado, - sf::st_coordinates(sf::st_centroid(polygon_seleccionado$geometry))) + cbind( + polygon_seleccionado, + sf::st_coordinates(sf::st_centroid(polygon_seleccionado$geometry)) + ) map <- ggplot2::ggplot(polygon_seleccionado) + ggplot2::ggtitle(label = titulo, subtitle = subtitulo) + - ggplot2::geom_sf(data = polygon_seleccionado, - ggplot2::aes(fill = .data$casos)) + - ggplot2::scale_fill_continuous(low = color_min, high = "#be0000", - guide = "colorbar", na.value = "white") + + ggplot2::geom_sf( + data = polygon_seleccionado, + ggplot2::aes(fill = .data$casos) + ) + + ggplot2::scale_fill_continuous( + low = color_min, high = "#be0000", + guide = "colorbar", na.value = "white" + ) + ggplot2::theme_void() + - ggplot2::theme(plot.title = ggplot2::element_text(hjust = 0.5, - face = "bold"), - plot.subtitle = ggplot2::element_text(hjust = 0.5, - face = "bold"), - text = ggplot2::element_text(size = 14), - legend.title = ggplot2::element_text(face = "bold")) + - ggplot2::labs(caption = fuente_data, fill = etiqueta_relleno) + ggplot2::theme( + plot.title = ggplot2::element_text( + hjust = 0.5, + face = "bold", + size = 18 + ), + plot.subtitle = ggplot2::element_text( + hjust = 0.5, + face = "bold", + size = 16 + ), + text = ggplot2::element_text(size = 16), + legend.text = ggplot2::element_text(size = 14), + legend.title = ggplot2::element_text( + size = 16, + face = "bold" + ), + plot.caption = ggplot2::element_text(size = 12) + ) + + ggplot2::labs(caption = fuente_data, fill = etiqueta_relleno) + + ggplot2::guides( + fill = + ggplot2::guide_colourbar( + barwidth = + ggplot2::unit(0.04, "npc"), + barheight = + ggplot2::unit(0.5, "npc") + ) + ) return(map) } #' @title Generar gr谩fico de distribuci贸n de casos por fecha de inicio de #' s铆ntomas -#' @description Funci贸n que genera el gr谩fico de distribuci贸n de casos +#' @description Funci贸n que genera un gr谩fico de distribuci贸n de casos #' por fecha de inicio de s铆ntomas. #' @param data_agrupada Un `data.frame` que contiene los datos de la enfermedad #' o evento agrupados. #' @param uni_marca Un `character` (cadena de caracteres) que contiene la unidad -#' de las marcas del gr谩fico (`"dia"`, `"semanaepi"` y `"mes"``); +#' de las marcas del gr谩fico (`"dia"`, `"semanaepi"` y `"mes"`); #' su valor por defecto es `"semanaepi"`. #' @param col_fecha Un `character` (cadena de caracteres) que contiene el #' nombre de la columna con las fechas de notificaci贸n en los datos de la @@ -174,10 +231,13 @@ plot_map <- function(data_agrupada, #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(dengue2020) #' data_agrupada <- agrupar_fecha_inisintomas( -#' data_event = data_limpia) -#' plot_fecha_inisintomas(data_agrupada = data_agrupada, -#' col_fecha = "ini_sin", -#' uni_marca = "semanaepi") +#' data_event = data_limpia +#' ) +#' plot_fecha_inisintomas( +#' data_agrupada = data_agrupada, +#' col_fecha = "ini_sin", +#' uni_marca = "semanaepi" +#' ) #' @export plot_fecha_inisintomas <- function(data_agrupada, col_fecha = "ini_sin", @@ -194,10 +254,11 @@ plot_fecha_inisintomas <- function(data_agrupada, fuente_data <- "Fuente: SIVIGILA, Instituto Nacional de Salud, Colombia" } - stopifnot("El parametro fuente_data debe ser un cadena de caracteres" - = is.character(fuente_data)) - uni_marca <- switch( - uni_marca, + stopifnot( + "El parametro fuente_data debe ser un cadena de caracteres" = + is.character(fuente_data) + ) + uni_marca <- switch(uni_marca, mes = "month", dia = "day", semanaepi = "semana" @@ -210,51 +271,78 @@ plot_fecha_inisintomas <- function(data_agrupada, data_plot[[var_x]] <- as.numeric(data_agrupada[[var_x]]) } if (tipo == "tendencia" && uni_marca != "day") { - data_plot <- dplyr::group_by_at(data_plot, - c(var_x, "nombre_evento")) - data_plot <- dplyr::summarise(data_plot, casos = sum(.data$casos), - .groups = "drop") + data_plot <- dplyr::group_by( + data_plot, + dplyr::across(dplyr::all_of(c(var_x, "nombre_evento"))) + ) + data_plot <- dplyr::summarise(data_plot, + casos = sum(.data$casos), + .groups = "drop" + ) } etiqueta_fecha <- obtener_val_config("label_date_ini") etiqueta_x <- paste0("\n", etiqueta_fecha, " por ", uni_marca, "\n") etiqueta_casos <- obtener_val_config("label_cases") - pos_leyenda <- ggplot2::theme(legend.position = "right") - if (num_eventos > 3) { - pos_leyenda <- ggplot2::theme(legend.position = "bottom") - } plot_casos_inisintomas <- - ggplot2::ggplot(data_plot, - ggplot2::aes(x = .data[[var_x]], - y = .data[["casos"]], - fill = .data[["nombre_evento"]])) + { + ggplot2::ggplot( + data_plot, + ggplot2::aes( + x = .data[[var_x]], + y = .data[["casos"]], + fill = .data[["nombre_evento"]] + ) + ) + + { if (tipo == "tendencia") { - ggplot2::geom_line(linewidth = 1, - color = "#FDDA0D") + ggplot2::geom_line( + linewidth = 1, + color = "#FDDA0D" + ) } else { ggplot2::geom_col(alpha = 0.9) } } + - ggplot2::labs(x = etiqueta_x, - y = paste0(etiqueta_casos, "\n"), - caption = fuente_data) + - obtener_estetica_escala(escala = num_eventos, nombre = "Eventos") + + ggplot2::labs( + x = etiqueta_x, + y = paste0(etiqueta_casos, "\n"), + caption = fuente_data + ) + + obtener_estetica_escala( + escala = num_eventos, nombre = "Eventos", + ajustar_texto = TRUE + ) + tema_sivirep() + - pos_leyenda + { + ggplot2::theme( + legend.position = "bottom", + legend.box = "horizontal", + legend.direction = "horizontal" + ) + + { if (uni_marca != "semana") { - ggplot2::scale_x_date(date_breaks = paste0("1 ", - uni_marca), - date_labels = "%b") + ggplot2::scale_x_date( + date_breaks = paste0( + "1 ", + uni_marca + ), + date_labels = "%b" + ) } else { - ggplot2::scale_x_continuous(breaks = seq(1, - 53, - 2)) + ggplot2::scale_x_continuous(breaks = seq( + 1, + 53, + 1 + )) } - } + } + + ggplot2::theme(axis.text.x = ggplot2::element_text( + angle = 90, + hjust = 1 + )) return(plot_casos_inisintomas) } #' @title Generar gr谩fico de distribuci贸n de casos por sexo -#' @description Funci贸n que genera el gr谩fico de distribuci贸n de casos por sexo. +#' @description Funci贸n que genera un gr谩fico de distribuci贸n de casos por sexo. #' @param data_agrupada Un `data.frame` que contiene los datos de la #' enfermedad o evento agrupados. #' @param col_sex Un `character` (cadena de caracteres) con el nombre de la @@ -263,7 +351,7 @@ plot_fecha_inisintomas <- function(data_agrupada, #' @param col_distribucion Un `character` (cadena de caracteres) que contiene el #' nombre de la columna que tiene los valores de la distribuci贸n, por n煤mero de #' casos o incidencia; su valor por defecto es `"incidencia"`. -#' @param porcentaje Un `boolean` (TRUE/FALSE) que indica si los datos +#' @param porcentaje Un `logical` (`TRUE` o `FALSE`) que indica si los datos #' tienen porcentajes; su valor por defecto es `TRUE`. #' @param fuente_data Un `character` (cadena de caracteres) que contiene la #' leyenda o fuente de informaci贸n de los datos; su valor por defecto es `NULL`. @@ -272,11 +360,15 @@ plot_fecha_inisintomas <- function(data_agrupada, #' \donttest{ #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(dengue2020) -#' data_agrupada <- agrupar_sex(data_event = data_limpia, -#' porcentaje = TRUE) -#' plot_sex(data_agrupada = data_agrupada, -#' col_sex = "sexo", -#' porcentaje = TRUE) +#' data_agrupada <- agrupar_sex( +#' data_event = data_limpia, +#' porcentaje = TRUE +#' ) +#' plot_sex( +#' data_agrupada = data_agrupada, +#' col_sex = "sexo", +#' porcentaje = TRUE +#' ) #' } #' @export plot_sex <- function(data_agrupada, @@ -287,58 +379,76 @@ plot_sex <- function(data_agrupada, validar_data_agrupada(data_agrupada) validar_sex(data_agrupada, col_sex) validar_porcentaje(porcentaje) - stopifnot("Valor invalido para el parametro col_distribucion" = - col_distribucion %in% c("casos", "incidencia")) + stopifnot( + "Valor invalido para el parametro col_distribucion" = + col_distribucion %in% c("casos", "incidencia") + ) if (is.null(fuente_data)) { fuente_data <- "Fuente: SIVIGILA, Instituto Nacional de Salud, Colombia" } - stopifnot("El parametro fuente_data debe ser un cadena de caracteres" - = is.character(fuente_data)) - etiqueta_eje <- NULL + stopifnot( + "El parametro fuente_data debe ser un cadena de caracteres" = + is.character(fuente_data) + ) if (col_distribucion == "casos") { etiqueta_eje <- obtener_val_config("label_cases") } else { etiqueta_eje <- obtener_val_config("label_incidence") } - plot_casos_sex <- ggplot2::ggplot(data_agrupada, - ggplot2::aes(x = - .data[[col_sex]], - y = - .data[[col_distribucion]], - fill = .data[[col_sex]])) + - ggplot2::geom_bar(width = 0.5, - stat = "identity") + - ggplot2::labs(x = "\nSexo\n", y = paste0(etiqueta_eje, "\n"), - caption = fuente_data) + - ggplot2::theme_classic() + { + num_sexos <- length(unique(data_agrupada[[col_sex]])) + plot_casos_sex <- ggplot2::ggplot( + data_agrupada, + ggplot2::aes( + x = + .data[[col_sex]], + y = + .data[[col_distribucion]], + fill = .data[[col_sex]] + ) + ) + + ggplot2::geom_col(width = 0.5) + + ggplot2::labs( + x = "\nSexo\n", y = paste0(etiqueta_eje, "\n"), + caption = fuente_data + ) + + { if (porcentaje) { - ggplot2::geom_text(ggplot2::aes(label = - paste0(.data[[col_distribucion]], - " \n (", - .data[["porcentaje"]], - " %)")), - vjust = 1.5, - color = "white", - hjust = 0.5) + ggplot2::geom_text( + ggplot2::aes( + label = + paste0( + .data[[col_distribucion]], + " \n (", + .data[["porcentaje"]], + " %)" + ) + ), + vjust = 1.5, + color = "white", + hjust = 0.5 + ) } else { - ggplot2::geom_text(ggplot2::aes(label = .data[[col_distribucion]]), - vjust = 1.5, - color = "white", - hjust = 0.5) - } - } + - obtener_estetica_escala(escala = 2, nombre = "Sexo") + - tema_sivirep() + - ggplot2::facet_wrap(facets = ~nombre_evento, - scales = "free_y", - ncol = 2) + ggplot2::geom_text(ggplot2::aes(label = .data[[col_distribucion]]), + vjust = 1.5, + color = "white", + hjust = 0.5 + ) + } + } + + obtener_estetica_escala(escala = num_sexos, nombre = "Sexo") + + tema_sivirep() + + ggplot2::facet_wrap( + facets = ~nombre_evento, + scales = "free_y", + ncol = 2 + ) return(plot_casos_sex) } #' @title Generar gr谩fico de distribuci贸n de casos por sexo y semana #' epidemiol贸gica -#' @description Funci贸n que genera el gr谩fico de distribuci贸n de casos por sexo +#' @description Funci贸n que genera un gr谩fico de distribuci贸n de casos por sexo #' y semana epidemiol贸gica. #' @param data_agrupada Un `data.frame` que contiene los datos de la enfermedad #' o evento agrupados. @@ -357,9 +467,11 @@ plot_sex <- function(data_agrupada, #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(dengue2020) #' data_agrupada <- agrupar_sex_semanaepi(data_event = data_limpia) -#' plot_sex_semanaepi(data_agrupada = data_agrupada, -#' col_sex = "sexo", -#' col_semanaepi = "semana") +#' plot_sex_semanaepi( +#' data_agrupada = data_agrupada, +#' col_sex = "sexo", +#' col_semanaepi = "semana" +#' ) #' @export plot_sex_semanaepi <- function(data_agrupada, col_sex = "sexo", @@ -367,49 +479,61 @@ plot_sex_semanaepi <- function(data_agrupada, fuente_data = NULL) { validar_data_agrupada(data_agrupada) validar_sex(data_agrupada, col_sex) - stopifnot("El parametro col_semanaepi debe ser una cadena de caracteres" = - is.character(col_semanaepi)) + stopifnot( + "El parametro col_semanaepi debe ser una cadena de caracteres" = + is.character(col_semanaepi) + ) if (is.null(fuente_data)) { fuente_data <- "Fuente: SIVIGILA, Instituto Nacional de Salud, Colombia" } - max_casos <- max(data_agrupada$casos) + max_casos <- max(data_agrupada$casos, na.rm = TRUE) data_agrupada$semana <- as.numeric(data_agrupada$semana) - max_semana <- max(data_agrupada$semana) + max_semana <- max(data_agrupada$semana, na.rm = TRUE) etiqueta_episemana <- obtener_val_config("label_epiweek") etiqueta_casos <- obtener_val_config("label_cases") + num_sexos <- length(unique(data_agrupada[[col_sex]])) plot_casos_sex_semanaepi <- - ggplot2::ggplot(data_agrupada, - ggplot2::aes(x = .data[[col_semanaepi]], - y = .data[["casos"]], - fill = .data[[col_sex]])) + - ggplot2::geom_bar(width = 0.5, - stat = "identity") + - ggplot2::labs(x = paste0("\n", etiqueta_episemana, "\n"), - y = paste0(etiqueta_casos, "\n"), - caption = fuente_data) + { - if (max_casos < 6) - ggplot2::scale_y_continuous(breaks = seq(0, max_casos, 1)) + ggplot2::ggplot( + data_agrupada, + ggplot2::aes( + x = .data[[col_semanaepi]], + y = .data[["casos"]], + fill = .data[[col_sex]] + ) + ) + + ggplot2::geom_col(width = 0.5) + + ggplot2::labs( + x = paste0("\n", etiqueta_episemana, "\n"), + y = paste0(etiqueta_casos, "\n"), + caption = fuente_data + ) + + { + if (max_casos < 6) { + ggplot2::scale_y_continuous(breaks = seq(0, max_casos, 1)) + } } + ggplot2::scale_x_continuous(breaks = seq(1, max_semana, 1)) + - ggplot2::theme_classic() + - obtener_estetica_escala(escala = 2, nombre = "Sexo") + + obtener_estetica_escala(escala = num_sexos, nombre = "Sexo") + tema_sivirep() + - ggplot2::facet_wrap(facets = ~nombre_evento, - scales = "free_y", - ncol = 1) + + ggplot2::facet_wrap( + facets = ~nombre_evento, + scales = "free_y", + ncol = 1 + ) + ggplot2::theme(axis.text.x = ggplot2::element_text( angle = 90, - hjust = 1)) + hjust = 1 + )) return(plot_casos_sex_semanaepi) } #' @title Generar gr谩fico de distribuci贸n de casos por edad -#' @description Funci贸n que genera el gr谩fico de distribuci贸n de casos +#' @description Funci贸n que genera un gr谩fico de distribuci贸n de casos #' por edad. #' @param data_agrupada Un `data.frame` que contiene los datos de la enfermedad #' o evento agrupados. -#' @param col_edad Un `character` (cadena de car谩cteres) con el nombre de +#' @param col_edad Un `character` (cadena de caracteres) con el nombre de #' la columna que contiene las edades en los datos agrupados de la enfermedad o #' evento; su valor por defecto es `"edad"`. #' @param fuente_data Un `character` (cadena de caracteres) que contiene la @@ -420,8 +544,10 @@ plot_sex_semanaepi <- function(data_agrupada, #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(dengue2020) #' data_agrupada <- agrupar_edad(data_event = data_limpia) -#' plot_edad(data_agrupada = data_agrupada, -#' col_edad = "edad") +#' plot_edad( +#' data_agrupada = data_agrupada, +#' col_edad = "edad" +#' ) #' @export plot_edad <- function(data_agrupada, col_edad = "edad", @@ -434,30 +560,36 @@ plot_edad <- function(data_agrupada, } etiqueta_casos <- obtener_val_config("label_cases") plot_casos_edad <- - ggplot2::ggplot(data_agrupada, - ggplot2::aes(x = .data[[col_edad]], - y = .data[["casos"]])) + - ggplot2::geom_bar(width = 0.7, - stat = "identity", - fill = "#2274BB") + - ggplot2::labs(x = "\nGrupo de edad\n", - y = paste0(etiqueta_casos, "\n"), - caption = fuente_data) + - ggplot2::theme_classic() + + ggplot2::ggplot( + data_agrupada, + ggplot2::aes( + x = .data[[col_edad]], + y = .data[["casos"]] + ) + ) + + ggplot2::geom_col( + width = 0.7, + fill = "#2274BB" + ) + + ggplot2::labs( + x = "\nGrupo de edad\n", + y = paste0(etiqueta_casos, "\n"), + caption = fuente_data + ) + tema_sivirep() return(plot_casos_edad) } #' @title Generar gr谩fico de distribuci贸n de casos por edad y sexo -#' @description Funci贸n que genera el gr谩fico de distribuci贸n de casos por +#' @description Funci贸n que genera un gr谩fico de distribuci贸n de casos por #' edad y sexo. #' @param data_agrupada Un `data.frame` que contiene los datos de la #' enfermedad o evento agrupados. #' @param col_edad Un `character` (cadena de caracteres) con el nombre de la -#' columna que contiene las edades en los datos agrupados de la enfermdedad o +#' columna que contiene las edades en los datos agrupados de la enfermedad o #' evento; su valor por defecto es `"edad`. #' @param col_sex Un `character` (cadena de caracteres) con el nombre de la -#' columna que contiene el sexo en los datos agrupados de la enfermdedad o +#' columna que contiene el sexo en los datos agrupados de la enfermedad o #' evento; su valor por defecto es `"sexo`. #' @param fuente_data Un `character` (cadena de caracteres) que contiene la #' leyenda o fuente de informaci贸n de los datos; su valor por defecto @@ -467,9 +599,11 @@ plot_edad <- function(data_agrupada, #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(dengue2020) #' data_agrupada <- agrupar_edad_sex(data_event = data_limpia) -#' plot_edad_sex(data_agrupada = data_agrupada, -#' col_edad = "edad", -#' col_sex = "sexo") +#' plot_edad_sex( +#' data_agrupada = data_agrupada, +#' col_edad = "edad", +#' col_sex = "sexo" +#' ) #' @export plot_edad_sex <- function(data_agrupada, col_edad = "edad", @@ -483,17 +617,22 @@ plot_edad_sex <- function(data_agrupada, "Fuente: SIVIGILA, Instituto Nacional de Salud, Colombia" } etiqueta_casos <- obtener_val_config("label_cases") + num_sexos <- length(unique(data_agrupada[[col_sex]])) plot_casos_edad_sexo <- - ggplot2::ggplot(data_agrupada, - ggplot2::aes(x = .data[[col_edad]], - y = .data[["casos"]], - fill = .data[[col_sex]])) + - ggplot2::geom_bar(width = 0.7, - stat = "identity") + - ggplot2::labs(x = "\nGrupo de edad\n", y = paste0(etiqueta_casos, "\n"), - caption = fuente_data) + - ggplot2::theme_classic() + - obtener_estetica_escala(escala = 2, nombre = "Sexo") + + ggplot2::ggplot( + data_agrupada, + ggplot2::aes( + x = .data[[col_edad]], + y = .data[["casos"]], + fill = .data[[col_sex]] + ) + ) + + ggplot2::geom_col(width = 0.7) + + ggplot2::labs( + x = "\nGrupo de edad\n", y = paste0(etiqueta_casos, "\n"), + caption = fuente_data + ) + + obtener_estetica_escala(escala = num_sexos, nombre = "Sexo") + tema_sivirep() return(plot_casos_edad_sexo) } @@ -503,7 +642,7 @@ plot_edad_sex <- function(data_agrupada, #' departamentos. #' @param data_agrupada Un `data.frame` que contiene los datos de la #' enfermedad o evento agrupados por departamentos. -#' @param col_dptos Un `character` (cadena de car谩cteres) con el nombre de +#' @param col_dptos Un `character` (cadena de caracteres) con el nombre de #' la columna que contiene los departamenos en los datos agrupados de la #' enfermedad o evento; su valor por defecto es `NULL`. #' @param fuente_data Un `character` (cadena de caracteres) que contiene la @@ -516,26 +655,36 @@ plot_edad_sex <- function(data_agrupada, #' data_limpia <- estandarizar_geo_cods(data_limpia) #' data_agrupada <- agrupar_dpto(data_event = data_limpia) #' plot_dptos(data_agrupada, -#' col_dptos = "departamento_ocurrencia") +#' col_dptos = "departamento_ocurrencia" +#' ) #' @export plot_dptos <- function(data_agrupada, col_dptos = NULL, fuente_data = NULL) { validar_data_agrupada(data_agrupada) + cols_geo_ocurrencia <- + obtener_tip_ocurren_geo( + nombre_event = + data_agrupada[["cod_eve"]][1] + ) if (is.null(fuente_data)) { fuente_data <- "Fuente: SIVIGILA, Instituto Nacional de Salud, Colombia" } if (is.null(col_dptos)) { - cols_geo_ocurrencia <- - obtener_tip_ocurren_geo(nombre_event = - data_agrupada[["nombre_evento"]][1]) if (length(cols_geo_ocurrencia) > 1) { col_dptos <- cols_geo_ocurrencia[2] } } else { - stopifnot("El parametro col_dptos debe ser una cadena de caracteres" - = is.character(col_dptos)) + stopifnot( + "El parametro col_dptos debe ser una cadena de caracteres" = + is.character(col_dptos) + ) + } + subtitulo <- obtener_val_config("label_geo_analysis") + if (length(cols_geo_ocurrencia) > 1) { + subtitulo <- paste0(subtitulo, cols_geo_ocurrencia[5], + "\n") } etiqueta_casos <- obtener_val_config("label_cases") num_eventos <- length(unique(data_agrupada[["nombre_evento"]])) @@ -543,34 +692,47 @@ plot_dptos <- function(data_agrupada, if (num_eventos > 3) { pos_leyenda <- ggplot2::theme(legend.position = "bottom") } - data_agrupada <- group_by_at(data_agrupada, col_dptos) + data_agrupada <- group_by( + data_agrupada, + dplyr::across(dplyr::all_of(col_dptos)) + ) data_agrupada <- dplyr::summarise(data_agrupada, - casos = sum(.data[["casos"]]), .groups = "drop") + casos = sum(.data[["casos"]]), .groups = "drop" + ) plot_casos_dptos <- - ggplot2::ggplot(data_agrupada, - ggplot2::aes(x = stats::reorder(.data[[col_dptos]], - .data[["casos"]]), - y = .data[["casos"]])) + - ggplot2::geom_bar(width = 0.5, - stat = "identity", - fill = "#2274BB") + - ggplot2::labs(x = "\nDepartamento\n", - y = paste0(etiqueta_casos, "\n"), - caption = fuente_data) + - ggplot2::theme_classic() + + ggplot2::ggplot( + data_agrupada, + ggplot2::aes( + x = .data[["casos"]], + y = stats::reorder( + .data[[col_dptos]], + .data[["casos"]] + ) + ) + ) + + ggplot2::geom_col( + width = 0.5, + fill = "#2274BB", + orientation = "y" + ) + + ggplot2::ggtitle(label = "", subtitle = subtitulo) + + ggplot2::labs( + x = paste0(etiqueta_casos, "\n"), + y = "\nDepartamento\n", + caption = fuente_data + ) + tema_sivirep() + - pos_leyenda + - ggplot2::coord_flip() + pos_leyenda return(plot_casos_dptos) } #' @title Generar gr谩fico de distribuci贸n de casos por municipios -#' @description Funci贸n que genera el gr谩fico de distribuci贸n de casos por +#' @description Funci贸n que genera un gr谩fico de distribuci贸n de casos por #' municipios. #' @param data_agrupada Un `data.frame` que contiene los datos de la #' enfermedad o evento agrupados por municipios. -#' @param col_mpios Un `character` (cadena de car谩cteres) con el nombre de +#' @param col_mpios Un `character` (cadena de caracteres) con el nombre de #' la columna que contiene los municipios en los datos agrupados de la #' enfermedad o evento; su valor por defecto es `NULL`. #' @param fuente_data Un `character` (cadena de caracteres) que contiene la @@ -581,29 +743,41 @@ plot_dptos <- function(data_agrupada, #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(dengue2020) #' data_limpia <- estandarizar_geo_cods(data_limpia) -#' data_agrupada <- agrupar_mpio(data_event = data_limpia, -#' dpto = "Antioquia") +#' data_agrupada <- agrupar_mpio( +#' data_event = data_limpia, +#' dpto = "Antioquia" +#' ) #' plot_mpios(data_agrupada, -#' col_mpios = "municipio_ocurrencia") +#' col_mpios = "municipio_ocurrencia" +#' ) #' @export plot_mpios <- function(data_agrupada, col_mpios = NULL, fuente_data = NULL) { validar_data_agrupada(data_agrupada) + cols_geo_ocurrencia <- + obtener_tip_ocurren_geo( + nombre_event = + data_agrupada[["cod_eve"]][1] + ) if (is.null(fuente_data)) { fuente_data <- "Fuente: SIVIGILA, Instituto Nacional de Salud, Colombia" } if (is.null(col_mpios)) { - cols_geo_ocurrencia <- - obtener_tip_ocurren_geo(nombre_event = - data_agrupada[["nombre_evento"]][1]) if (length(cols_geo_ocurrencia) > 1) { col_mpios <- cols_geo_ocurrencia[4] } } else { - stopifnot("El parametro col_mpios debe ser una cadena de caracteres" - = is.character(col_mpios)) + stopifnot( + "El parametro col_mpios debe ser una cadena de caracteres" = + is.character(col_mpios) + ) + } + subtitulo <- obtener_val_config("label_geo_analysis") + if (length(cols_geo_ocurrencia) > 1) { + subtitulo <- paste0(subtitulo, cols_geo_ocurrencia[5], + "\n") } etiqueta_casos <- obtener_val_config("label_cases") num_eventos <- length(unique(data_agrupada[["nombre_evento"]])) @@ -611,25 +785,38 @@ plot_mpios <- function(data_agrupada, if (num_eventos > 3) { pos_leyenda <- ggplot2::theme(legend.position = "bottom") } - data_agrupada <- group_by_at(data_agrupada, col_mpios) + data_agrupada <- group_by( + data_agrupada, + dplyr::across(dplyr::all_of(col_mpios)) + ) data_agrupada <- dplyr::summarise(data_agrupada, - casos = sum(.data[["casos"]]), .groups = "drop") + casos = sum(.data[["casos"]]), .groups = "drop" + ) plot_casos_muns <- - ggplot2::ggplot(data_agrupada, - ggplot2::aes(x = stats::reorder(.data[[col_mpios]], - .data[["casos"]]), - y = .data[["casos"]])) + - ggplot2::geom_bar(width = 0.5, - stat = "identity", - fill = "#2274BB") + - ggplot2::labs(x = "\nMunicipio\n", - y = paste0(etiqueta_casos, "\n"), - caption = fuente_data) + - ggplot2::theme_classic() + + ggplot2::ggplot( + data_agrupada, + ggplot2::aes( + x = .data[["casos"]], + y = stats::reorder( + .data[[col_mpios]], + .data[["casos"]] + ) + ) + ) + + ggplot2::geom_col( + width = 0.5, + fill = "#2274BB", + orientation = "y" + ) + + ggplot2::ggtitle(label = "", subtitle = subtitulo) + + ggplot2::labs( + x = paste0(etiqueta_casos, "\n"), + y = "\nMunicipio\n", + caption = fuente_data + ) + tema_sivirep() + - pos_leyenda + - ggplot2::coord_flip() + pos_leyenda return(plot_casos_muns) } @@ -637,8 +824,8 @@ plot_mpios <- function(data_agrupada, #' @description Funci贸n que genera el gr谩fico de casos por 谩rea geogr谩fica. #' @param data_agrupada Un `data.frame` que contiene los datos de la #' enfermedad o evento agrupados. -#' @param col_area Un `character` (cadena de car谩cteres) con el nombre de -#' la columna con el 谩rea geografica en los datos agrupados de la enfermedad +#' @param col_area Un `character` (cadena de caracteres) con el nombre de +#' la columna con el 谩rea geogr谩fica en los datos agrupados de la enfermedad #' o evento; su valor por defecto es `"area"`. #' @param fuente_data Un `character` (cadena de caracteres) que contiene la #' leyenda o fuente de informaci贸n de los datos; su valor por defecto @@ -650,15 +837,18 @@ plot_mpios <- function(data_agrupada, #' data_limpia <- limpiar_data_sivigila(dengue2020) #' data_agrupada <- agrupar_area_geo(data_event = data_limpia) #' plot_area_geo(data_agrupada, -#' col_area = "area") +#' col_area = "area" +#' ) #' } #' @export plot_area_geo <- function(data_agrupada, col_area = "area", fuente_data = NULL) { validar_data_agrupada(data_agrupada) - stopifnot("El parametro col_area debe ser una cadena de caracteres" - = is.character(col_area)) + stopifnot( + "El parametro col_area debe ser una cadena de caracteres" = + is.character(col_area) + ) if (is.null(fuente_data)) { fuente_data <- "Fuente: SIVIGILA, Instituto Nacional de Salud, Colombia" @@ -668,16 +858,22 @@ plot_area_geo <- function(data_agrupada, etiqueta_area_geo <- obtener_val_config("label_geo_area") pos_leyenda <- ggplot2::theme(legend.position = "right") plot_casos_area <- - ggplot2::ggplot(data_agrupada, - ggplot2::aes(x = .data[[col_area]], - y = .data[["casos"]])) + - ggplot2::geom_bar(stat = "identity", - fill = "#2274BB", - width = 0.3) + - ggplot2::labs(x = paste0("\n", etiqueta_area_geo), - y = paste0(etiqueta_casos, "\n"), - caption = fuente_data) + - ggplot2::theme_classic() + + ggplot2::ggplot( + data_agrupada, + ggplot2::aes( + x = .data[[col_area]], + y = .data[["casos"]] + ) + ) + + ggplot2::geom_col( + fill = "#2274BB", + width = 0.3 + ) + + ggplot2::labs( + x = paste0(etiqueta_casos, "\n"), + y = paste0("\n", etiqueta_area_geo), + caption = fuente_data + ) + tema_sivirep() + ggplot2::scale_x_discrete(labels = etiquetas_areas) + pos_leyenda @@ -690,9 +886,9 @@ plot_area_geo <- function(data_agrupada, #' nivel departamental o municipal. #' @param data_agrupada Un `data.frame` que contiene los datos de la #' enfermedad o evento agrupados. -#' @param col_area Un `character` (cadena de car谩cteres) con el nombre de -#' la columna con el 谩rea geografica en los datos agrupados de la enfermedad -#' o evento; su valor por defecto es `"area"`. +#' @param col_area Un `character` (cadena de caracteres) con el nombre de +#' la columna que contiene el 谩rea geogr谩fica en los datos agrupados de la +#' enfermedad o evento; su valor por defecto es `"area"`. #' @param fuente_data Un `character` (cadena de caracteres) que contiene la #' leyenda o fuente de informaci贸n de los datos; su valor por defecto #' es `NULL`. @@ -701,57 +897,75 @@ plot_area_geo <- function(data_agrupada, #' \donttest{ #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(dengue2020) -#' data_agrupada <- agrupar_top_area_geo(data_event = data_limpia, -#' dpto = "Antioquia") +#' data_agrupada <- agrupar_top_area_geo( +#' data_event = data_limpia, +#' dpto = "Antioquia" +#' ) #' plot_top_area_geo(data_agrupada, -#' col_area = "area") +#' col_area = "area" +#' ) #' } #' @export plot_top_area_geo <- function(data_agrupada, - col_area = "area", - fuente_data = NULL) { + col_area = "area", + fuente_data = NULL) { validar_data_agrupada(data_agrupada) - stopifnot("El parametro col_area debe ser una cadena de caracteres" - = is.character(col_area)) + stopifnot( + "El parametro col_area debe ser una cadena de caracteres" = + is.character(col_area) + ) if (is.null(fuente_data)) { fuente_data <- "Fuente: SIVIGILA, Instituto Nacional de Salud, Colombia" } cols_geo_ocurrencia <- - obtener_tip_ocurren_geo(nombre_event = - data_agrupada[["nombre_evento"]][1]) + obtener_tip_ocurren_geo( + nombre_event = + data_agrupada[["cod_eve"]][1] + ) etiquetas_areas <- obtener_val_config("labels_geo_areas") etiqueta_casos <- obtener_val_config("label_cases") etiqueta_area_geo <- obtener_val_config("label_geo_area") nomb_cols <- NULL if (length(cols_geo_ocurrencia) > 1) { - if (cols_geo_ocurrencia[4] %in% names(data_agrupada)) { - nomb_cols <- append(col_area, cols_geo_ocurrencia[4]) - } else { - nomb_cols <- append(col_area, cols_geo_ocurrencia[2]) - } + if (cols_geo_ocurrencia[4] %in% names(data_agrupada)) { + nomb_cols <- append(col_area, cols_geo_ocurrencia[4]) + } else { + nomb_cols <- append(col_area, cols_geo_ocurrencia[2]) + } } pos_leyenda <- ggplot2::theme(legend.position = "right") - data_agrupada_area <- group_by_at(data_agrupada, nomb_cols) + num_areas <- length(unique(data_agrupada[[col_area]])) + data_agrupada_area <- group_by( + data_agrupada, + dplyr::across(dplyr::all_of(nomb_cols)) + ) data_agrupada_area <- dplyr::summarise(data_agrupada_area, - casos = sum(.data[["casos"]]), - .groups = "drop") + casos = sum(.data[["casos"]]), + .groups = "drop" + ) plot_casos_area <- - ggplot2::ggplot(data_agrupada_area, - ggplot2::aes(x = .data[[nomb_cols[2]]], - y = .data[["casos"]], - fill = .data[[nomb_cols[1]]])) + - ggplot2::geom_bar(stat = "identity") + - ggplot2::labs(x = "\nDepartamento\n", - y = paste0("\n", etiqueta_casos), - caption = fuente_data) + - ggplot2::theme_classic() + - obtener_estetica_escala(escala = 3, - nombre = paste0(etiqueta_area_geo, "\n"), - etiquetas = etiquetas_areas) + + ggplot2::ggplot( + data_agrupada_area, + ggplot2::aes( + x = .data[["casos"]], + y = .data[[nomb_cols[2]]], + fill = .data[[nomb_cols[1]]] + ) + ) + + ggplot2::geom_col(orientation = "y") + + ggplot2::labs( + x = paste0("\n", etiqueta_casos), + y = "\nDepartamento\n", + caption = fuente_data + ) + + obtener_estetica_escala( + escala = num_areas, + nombre = paste0(etiqueta_area_geo, "\n"), + etiquetas = etiquetas_areas + ) + tema_sivirep() + - pos_leyenda + - ggplot2::coord_flip() + pos_leyenda return(plot_casos_area) } @@ -761,7 +975,7 @@ plot_top_area_geo <- function(data_agrupada, #' por tipo de enfermedad o evento. #' @param data_agrupada Un `data.frame` que contiene los datos de la #' enfermedad o evento agrupados por tipo. -#' @param col_event Un `character` (cadena de car谩cteres) con el nombre de +#' @param col_event Un `character` (cadena de caracteres) con el nombre de #' la columna que contiene el tipo de evento en los datos agrupados de #' la enfermedad o evento; su valor por defecto es `"nombre_evento"`. #' @return Una `kable` (tabla gr谩fica) con la distribuci贸n de casos @@ -769,42 +983,60 @@ plot_top_area_geo <- function(data_agrupada, #' @examples #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(dengue2020) -#' data_agrupada <- agrupar_eventos(data_event = data_limpia, -#' col_event = "cod_eve") +#' data_agrupada <- agrupar_eventos( +#' data_event = data_limpia, +#' col_event = "cod_eve" +#' ) #' plot_tabla_tipos_event(data_agrupada, -#' col_event = "nombre_evento") +#' col_event = "nombre_evento" +#' ) #' @export plot_tabla_tipos_event <- function(data_agrupada, col_event = "nombre_evento") { validar_data_agrupada(data_agrupada) - stopifnot("El parametro col_event debe ser una cadena de caracteres" - = is.character(col_event)) + stopifnot( + "El parametro col_event debe ser una cadena de caracteres" = + is.character(col_event) + ) etiqueta_cod <- obtener_val_config("label_code") caption_tabla <- obtener_val_config("caption_table_events") + data_agrupada <- data_agrupada[order(data_agrupada[["casos"]], + decreasing = TRUE), ] data_agrupada[[col_event]] <- stringr::str_to_title(data_agrupada[[col_event]]) - tabla_tipos <- kableExtra::kbl(data_agrupada[, c("cod_eve", - col_event, - "casos")], - col.names = c(etiqueta_cod, - "Evento", "Casos"), - align = "c", - caption = caption_tabla) - tabla_tipos <- kableExtra::row_spec(tabla_tipos, 0, color = "white", - background = "#2274BB") - tabla_tipos <- - kableExtra::kable_styling(tabla_tipos, full_width = FALSE, - latex_options = "HOLD_position") + tabla_tipos <- kableExtra::kbl( + data_agrupada[, c( + "cod_eve", + col_event, + "casos" + )], + col.names = c( + etiqueta_cod, + "Evento", "Casos" + ), + align = "c", + caption = caption_tabla + ) + tabla_tipos <- kableExtra::row_spec(tabla_tipos, 0, + color = "white", + background = "#2274BB" + ) + tabla_tipos <- + kableExtra::kable_styling(tabla_tipos, + full_width = FALSE, + latex_options = "HOLD_position" + ) return(tabla_tipos) } #' @title Generar gr谩fico de distribuci贸n de casos por a帽o -#' @description Funci贸n que genera el gr谩fico de casos por a帽o. +#' @description Funci贸n que genera un gr谩fico de distribuci贸n de casos +#' por a帽o. #' @param data_agrupada Un `data.frame` que contiene los datos de la #' enfermedad o evento agrupados por a帽o. -#' @param col_year Un `character` (cadena de car谩cteres) con el nombre de +#' @param col_year Un `character` (cadena de caracteres) con el nombre de #' la columna que contiene los a帽os en los datos agrupados de la enfermedad -#' o evento por a帽o; su valor por defecto es `"ano"`. +#' o evento; su valor por defecto es `"ano"`. #' @param fuente_data Un `character` (cadena de caracteres) que contiene la #' leyenda o fuente de informaci贸n de los datos; su valor por defecto #' es `NULL`. @@ -814,14 +1046,18 @@ plot_tabla_tipos_event <- function(data_agrupada, #' data_limpia <- limpiar_data_sivigila(dengue2020) #' data_agrupada <- agrupar_years(data_event = data_limpia) #' plot_years(data_agrupada, -#' col_year = "ano") +#' col_year = "ano" +#' ) #' \donttest{ -#' data_years <- import_data_event(nombre_event = "ZIKA", -#' years = c(2019, 2020)) +#' data_years <- import_data_event( +#' nombre_event = "CHAGAS", +#' years = c(2019, 2020), +#' ) #' data_limpia <- limpiar_data_sivigila(data_years) #' data_agrupada <- agrupar_years(data_event = data_limpia) #' plot_years(data_agrupada, -#' col_year = "ano") +#' col_year = "ano" +#' ) #' } #' @export plot_years <- function(data_agrupada, @@ -835,51 +1071,59 @@ plot_years <- function(data_agrupada, fuente_data <- "Fuente: SIVIGILA, Instituto Nacional de Salud, Colombia" } - eventos <- length(unique(data_agrupada[["nombre_evento"]])) + num_eventos <- length(unique(data_agrupada[["nombre_evento"]])) plot_casos_years <- - ggplot2::ggplot(data_agrupada, - ggplot2::aes(x = .data[[col_year]], - y = .data[["casos"]], - fill = .data[["nombre_evento"]])) + - ggplot2::geom_bar(stat = "identity") + - ggplot2::labs(x = paste0("\n", etiqueta_year, "\n"), - y = paste0(etiqueta_casos, "\n"), - caption = fuente_data) + - ggplot2::theme_classic() + - obtener_estetica_escala(escala = eventos, nombre = "Eventos\n") + + ggplot2::ggplot( + data_agrupada, + ggplot2::aes( + x = .data[[col_year]], + y = .data[["casos"]], + fill = .data[["nombre_evento"]] + ) + ) + + ggplot2::geom_col() + + ggplot2::labs( + x = paste0("\n", etiqueta_year, "\n"), + y = paste0(etiqueta_casos, "\n"), + caption = fuente_data + ) + + obtener_estetica_escala(escala = num_eventos, nombre = "Eventos\n") + tema_sivirep() + ggplot2::theme(legend.position = "right") return(plot_casos_years) } -#' @title Generar gr谩fico de distribuci贸n de casos por la clasificacion +#' @title Generar gr谩fico de distribuci贸n de casos por la clasificaci贸n #' inicial del caso -#' @description Funci贸n que genera el gr谩fico de distribuci贸n por la -#' clasificaci贸n inicial de los casos. +#' @description Funci贸n que genera un gr谩fico de distribuci贸n de casos +#' seg煤n su clasificaci贸n inicial. #' @param data_agrupada Un `data.frame` que contiene los datos de la -#' enfermedad o evento agrupados por la clasificaci贸n inicial de los casos. -#' @param col_tipo Un `character` (cadena de car谩cteres) con el nombre de +#' enfermedad o evento agrupados seg煤n la clasificaci贸n inicial de los casos. +#' @param col_tipo Un `character` (cadena de caracteres) con el nombre de #' la columna que contiene la clasificaci贸n inicial de los casos en los #' datos agrupados de la enfermedad o evento; su valor por defecto es #' `"tip_cas"`. #' @param fuente_data Un `character` (cadena de caracteres) que contiene la #' leyenda o fuente de informaci贸n de los datos; su valor por defecto #' es `NULL`. -#' @return Un `plot` o gr谩fico de distribuci贸n de casos por la clasificaci贸n -#' inicial. +#' @return Un `plot` o gr谩fico de distribuci贸n de casos seg煤n su +#' clasificaci贸n inicial. #' @examples #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(dengue2020) #' data_agrupada <- agrupar_tipo_caso(data_event = data_limpia) #' plot_tipo_caso(data_agrupada, -#' col_tipo = "tip_cas") +#' col_tipo = "tip_cas" +#' ) #' @export plot_tipo_caso <- function(data_agrupada, col_tipo = "tip_cas", fuente_data = NULL) { validar_data_agrupada(data_agrupada) - stopifnot("El parametro col_tipo debe ser una cadena de caracteres" - = is.character(col_tipo)) + stopifnot( + "El parametro col_tipo debe ser una cadena de caracteres" = + is.character(col_tipo) + ) if (is.null(fuente_data)) { fuente_data <- "Fuente: SIVIGILA, Instituto Nacional de Salud, Colombia" @@ -895,50 +1139,62 @@ plot_tipo_caso <- function(data_agrupada, etiquetas <- etiquetas[as.character(clasificacion)] etiquetas <- unlist(etiquetas) plot_tipo_casos <- - ggplot2::ggplot(data_agrupada, - ggplot2::aes(x = .data[[nomb_cols[1]]], - y = .data[["casos"]], - fill = .data[[nomb_cols[2]]])) + - ggplot2::geom_bar(stat = "identity", width = 0.5) + - ggplot2::labs(x = paste0("\n", etiqueta_tipo, "\n"), - y = paste0(etiqueta_casos, "\n"), - caption = fuente_data) + - ggplot2::theme_classic() + + ggplot2::ggplot( + data_agrupada, + ggplot2::aes( + x = .data[[nomb_cols[1]]], + y = .data[["casos"]], + fill = .data[[nomb_cols[2]]] + ) + ) + + ggplot2::geom_col(width = 0.5) + + ggplot2::labs( + x = paste0("\n", etiqueta_tipo, "\n"), + y = paste0(etiqueta_casos, "\n"), + caption = fuente_data + ) + obtener_estetica_escala(escala = escala, nombre = "Eventos\n") + - ggplot2::scale_x_discrete(labels = etiquetas) - tema_sivirep() + - ggplot2::theme(legend.position = "right") + ggplot2::scale_x_discrete(labels = stringr::str_wrap( + etiquetas, + 5 + )) + + tema_sivirep() return(plot_tipo_casos) } -#' @title Generar gr谩fico de distribuci贸n de casos por la clasificacion +#' @title Generar gr谩fico de distribuci贸n de casos por la clasificaci贸n #' inicial del caso y los a帽os seleccionados -#' @description Funci贸n que genera el gr谩fico por la clasificaci贸n inicial -#' de los casos y los a帽os seleccionados. +#' @description Funci贸n que genera un gr谩fico de distribuci贸n de casos +#' seg煤n su clasificaci贸n inicial y los a帽os seleccionados. #' @param data_agrupada Un `data.frame` que contiene los datos de la #' enfermedad o evento, agrupados por la clasificaci贸n inicial y los a帽os #' seleccionados. -#' @param col_tipo Un `character` (cadena de car谩cteres) con el nombre de +#' @param col_tipo Un `character` (cadena de caracteres) con el nombre de #' la columna que contiene la clasificaci贸n inicial del caso en los datos #' agrupados de la enfermedad o evento; su valor por defecto es #' `"tip_cas"`. -#' @param col_year Un `character` (cadena de car谩cteres) con el nombre de +#' @param col_year Un `character` (cadena de caracteres) con el nombre de #' la columna que contiene el a帽o en los datos agrupados de la enfermedad #' o evento; su valor por defecto es `"ano"`. #' @param fuente_data Un `character` (cadena de caracteres) que contiene la #' leyenda o fuente de informaci贸n de los datos; su valor por defecto #' es `NULL`. -#' @return Un `plot` o gr谩fico de distribuci贸n de casos por la clasificaci贸n +#' @return Un `plot` o gr谩fico de distribuci贸n de casos seg煤n su clasificaci贸n #' inicial y los a帽os seleccionados. #' @examples #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(dengue2020) -#' data_agrupada <- agrupar_tipo_caso(data_event = data_limpia, -#' cols_tipo = c("tip_cas", -#' "ano")) +#' data_agrupada <- agrupar_tipo_caso( +#' data_event = data_limpia, +#' cols_tipo = c( +#' "tip_cas", +#' "ano" +#' ) +#' ) #' plot_tipo_caso_years(data_agrupada, -#' col_tipo = "tip_cas", -#' col_year = "ano") +#' col_tipo = "tip_cas", +#' col_year = "ano" +#' ) #' @export plot_tipo_caso_years <- function(data_agrupada, col_tipo = "tip_cas", @@ -946,8 +1202,10 @@ plot_tipo_caso_years <- function(data_agrupada, fuente_data = NULL) { validar_data_agrupada(data_agrupada) validar_years(data_agrupada, col_year) - stopifnot("El parametro col_tipo debe ser una cadena de caracteres" - = is.character(col_tipo)) + stopifnot( + "El parametro col_tipo debe ser una cadena de caracteres" = + is.character(col_tipo) + ) if (is.null(fuente_data)) { fuente_data <- "Fuente: SIVIGILA, Instituto Nacional de Salud, Colombia" @@ -957,42 +1215,48 @@ plot_tipo_caso_years <- function(data_agrupada, etiqueta_casos <- obtener_val_config("label_cases") etiqueta_tipo <- obtener_val_config("label_type_case") clasificacion <- unique(data_agrupada[[col_tipo]]) - escala <- length(unique(data_agrupada[[col_tipo]])) + num_tipos <- length(unique(data_agrupada[[col_tipo]])) etiquetas <- etiquetas[as.character(clasificacion)] etiquetas <- unlist(etiquetas) plot_casos_years <- - ggplot2::ggplot(data_agrupada, - ggplot2::aes(x = .data[[col_year]], - y = .data[["casos"]], - fill = .data[[col_tipo]])) + - ggplot2::geom_bar(stat = "identity") + - ggplot2::labs(x = paste0("\n", etiqueta_year, "\n"), - y = paste0(etiqueta_casos, "\n"), - caption = fuente_data) + - ggplot2::theme_classic() + - obtener_estetica_escala(escala = escala, - nombre = paste0(etiqueta_tipo, "\n"), - etiquetas = etiquetas) + + ggplot2::ggplot( + data_agrupada, + ggplot2::aes( + x = .data[[col_year]], + y = .data[["casos"]], + fill = .data[[col_tipo]] + ) + ) + + ggplot2::geom_col() + + ggplot2::labs( + x = paste0("\n", etiqueta_year, "\n"), + y = paste0(etiqueta_casos, "\n"), + caption = fuente_data + ) + + obtener_estetica_escala( + escala = num_tipos, + nombre = paste0(etiqueta_tipo, "\n"), + etiquetas = etiquetas + ) + tema_sivirep() + ggplot2::theme(legend.position = "right") return(plot_casos_years) } -#' @title Generar gr谩fico de distribuci贸n de casos por la pertenencia -#' 茅tnica +#' @title Generar gr谩fico de distribuci贸n de casos por pertenencia 茅tnica #' @description Funci贸n que genera el gr谩fico de la distribuci贸n de casos -#' por la pertenencia 茅tnica. +#' por pertenencia 茅tnica. #' @param data_agrupada Un `data.frame` que contiene los datos de la -#' enfermedad o evento agrupados por la pertenencia 茅tnica. -#' @param col_etn Un `character` (cadena de car谩cteres) con el nombre de +#' enfermedad o evento agrupados por pertenencia 茅tnica. +#' @param col_etn Un `character` (cadena de caracteres) con el nombre de #' la columna que contiene la pertenencia 茅tnica en los datos agrupados de #' la enfermedad o evento; su valor por defecto es `"per_etn"`. -#' @param porcentaje Un `boolean` (TRUE/FALSE) que indica si los datos +#' @param porcentaje Un `logical` (`TRUE` o `FALSE`) que indica si los datos #' tienen porcentajes; su valor por defecto es `TRUE`. #' @param fuente_data Un `character` (cadena de caracteres) que contiene la #' leyenda o fuente de informaci贸n de los datos; su valor por defecto #' es `NULL`. -#' @return Un `plot` o gr谩fico de la distribuci贸n de casos por la pertenencia +#' @return Un `plot` o gr谩fico de la distribuci贸n de casos por pertenencia #' 茅tnica. #' @examples #' \donttest{ @@ -1000,7 +1264,8 @@ plot_tipo_caso_years <- function(data_agrupada, #' data_limpia <- limpiar_data_sivigila(dengue2020) #' data_agrupada <- agrupar_per_etn(data_event = data_limpia) #' plot_per_etn(data_agrupada, -#' col_etn = "per_etn") +#' col_etn = "per_etn" +#' ) #' } #' @export plot_per_etn <- function(data_agrupada, @@ -1008,8 +1273,10 @@ plot_per_etn <- function(data_agrupada, porcentaje = TRUE, fuente_data = NULL) { validar_data_agrupada(data_agrupada) - stopifnot("El parametro col_etn debe ser una cadena de caracteres" - = is.character(col_etn)) + stopifnot( + "El parametro col_etn debe ser una cadena de caracteres" = + is.character(col_etn) + ) if (is.null(fuente_data)) { fuente_data <- "Fuente: SIVIGILA, Instituto Nacional de Salud, Colombia" @@ -1020,33 +1287,41 @@ plot_per_etn <- function(data_agrupada, grupos <- unique(data_agrupada[[col_etn]]) etiquetas <- etiquetas[as.character(grupos)] etiquetas <- unlist(etiquetas) - data_agrupada <- agrupar_cols_casos(data_event = data_agrupada, - nomb_cols = col_etn, - porcentaje = TRUE, - estandar = FALSE) + data_agrupada <- agrupar_cols_casos( + data_event = data_agrupada, + nomb_cols = col_etn, + porcentaje = TRUE, + estandar = FALSE + ) plot_per_etn <- - ggplot2::ggplot(data_agrupada, - ggplot2::aes(x = .data[[col_etn]], - y = .data[["casos"]])) + - ggplot2::geom_bar(stat = "identity", - fill = "#2274BB") + - ggplot2::labs(x = paste0(etiqueta_etn, "\n"), - y = paste0("\n", etiqueta_casos), - caption = fuente_data) + + ggplot2::ggplot( + data_agrupada, + ggplot2::aes( + x = .data[["casos"]], + y = .data[[col_etn]] + ) + ) + + ggplot2::geom_col(fill = "#2274BB", orientation = "y") + + ggplot2::labs( + x = paste0("\n", etiqueta_casos), + y = paste0(etiqueta_etn, "\n"), + caption = fuente_data + ) + ggplot2::theme_classic() + - ggplot2::scale_x_discrete(labels = stringr::str_wrap(etiquetas, - 5)) + - tema_sivirep() + - ggplot2::coord_flip() + ggplot2::scale_y_discrete(labels = stringr::str_wrap( + etiquetas, + 5 + )) + + tema_sivirep() return(plot_per_etn) } #' @title Generar tabla con la incidencia -#' @description Funci贸n que genera la tabla con la incidencia seg煤n +#' @description Funci贸n que genera la tabla con la incidencia seg煤n la #' distribuci贸n geogr谩fica. #' @param data_agrupada Un `data.frame` que contiene los datos de la #' enfermedad o evento agrupados por departamento o municipio. -#' @param col_geo Un `character` (cadena de car谩cteres) con el nombre de +#' @param col_geo Un `character` (cadena de caracteres) con el nombre de #' la columna que contiene los nombres de los departamentos o municipios #' en los datos agrupados de la enfermedad o evento; su valor por #' defecto es `NULL`. @@ -1057,61 +1332,79 @@ plot_per_etn <- function(data_agrupada, #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(data_event = dengue2020) #' data_agrupada <- agrupar_mpio(data_limpia, dpto = "Antioquia") -#' incidencia_mpios <- calcular_incidencia_geo(data_agrupada = -#' data_agrupada) -#' plot_tabla_incidencia_geo(data_agrupada = incidencia_mpios, -#' col_geo = "municipio_ocurrencia") +#' incidencia_mpios <- calcular_incidencia_geo( +#' data_agrupada = +#' data_agrupada +#' ) +#' plot_tabla_incidencia_geo( +#' data_agrupada = incidencia_mpios$data_incidencia, +#' col_geo = "municipio_ocurrencia" +#' ) #' } #' @export plot_tabla_incidencia_geo <- function(data_agrupada, col_geo = NULL) { validar_data_agrupada(data_agrupada) - nomb_cols <- obtener_tip_ocurren_geo(data_agrupada$nombre_evento[1]) + nomb_cols <- obtener_tip_ocurren_geo(data_agrupada[["cod_eve"]][1]) etiqueta_geo <- "Departamento" etiqueta_cod <- obtener_val_config("label_code") if (is.null(col_geo)) { col_geo <- nomb_cols[1:2] } if (nomb_cols[3] %in% colnames(data_agrupada) && - length(unique(data_agrupada[[nomb_cols[1]]])) == 1) { + length(unique(data_agrupada[[nomb_cols[1]]])) == 1) { etiqueta_geo <- "Municipio" col_geo <- nomb_cols[3:4] } cond_incidencia <- - obtener_cond_inciden_event(cod_eve = data_agrupada$cod_eve[1]) + obtener_cond_inciden_event(cod_eve = data_agrupada[["cod_eve"]][1]) caption_tabla <- obtener_val_config("caption_geo_incidence") - caption_tabla <- paste0(caption_tabla, nomb_cols[5], " por ", - cond_incidencia$coeficiente, - " habitantes") + caption_tabla <- paste0( + caption_tabla, nomb_cols[5], " por ", + cond_incidencia$coeficiente, + " habitantes" + ) data_agrupada[[col_geo[2]]] <- stringr::str_to_title(data_agrupada[[col_geo[2]]]) - data_tabla <- group_by_at(data_agrupada, c(col_geo, "incidencia")) + data_tabla <- group_by( + data_agrupada, + dplyr::across(dplyr::all_of(c(col_geo, "incidencia"))) + ) data_tabla <- dplyr::summarise(data_tabla, - incidencia = sum(.data[["incidencia"]]), - .groups = "drop") + incidencia = sum(.data[["incidencia"]]), + .groups = "drop" + ) data_tabla <- data_tabla[order(data_tabla$incidencia, - decreasing = TRUE), ] + decreasing = TRUE + ), ] tabla_geo <- kableExtra::kbl(data_tabla, - col.names = c(etiqueta_cod, - etiqueta_geo, - "Incidencia"), - align = "c", - caption = caption_tabla, - longtable = TRUE) - tabla_geo <- kableExtra::row_spec(tabla_geo, 0, color = "white", - background = "#2274BB") + col.names = c( + etiqueta_cod, + etiqueta_geo, + "Incidencia" + ), + align = "c", + caption = caption_tabla, + longtable = TRUE + ) + tabla_geo <- kableExtra::row_spec(tabla_geo, 0, + color = "white", + background = "#2274BB" + ) tabla_geo <- - kableExtra::kable_styling(tabla_geo, full_width = FALSE, - latex_options = "HOLD_position") + kableExtra::kable_styling(tabla_geo, + full_width = FALSE, + latex_options = "HOLD_position" + ) return(tabla_geo) } #' @title Generar tabla con la incidencia por sexo -#' @description Funci贸n que genera la tabla con la incidencia seg煤n por +#' @description Funci贸n que genera la tabla con la incidencia por #' sexo. #' @param data_agrupada Un `data.frame` que contiene los datos de la #' enfermedad o evento agrupados por departamento o municipio. -#' @param col_sex Un `character` (cadena de car谩cteres) con el nombre de +#' @param col_sex Un `character` (cadena de caracteres) con el nombre de #' la columna que contiene el sexo en los datos agrupados de la enfermedad #' o evento; su valor por defecto es `"sexo"`. #' @return Una `kable` (tabla gr谩fica) con la incidencia por sexo. @@ -1121,10 +1414,14 @@ plot_tabla_incidencia_geo <- function(data_agrupada, #' data_limpia <- limpiar_data_sivigila(data_event = dengue2020) #' data_agrupada_sex <- agrupar_sex(data_limpia) #' incidencia_mpios <- -#' calcular_incidencia_sex(data_agrupada = data_agrupada_sex, -#' dpto = "Antioquia") -#' plot_tabla_incidencia_sex(data_agrupada = incidencia_mpios, -#' col_sex = "sexo") +#' calcular_incidencia_sex( +#' data_agrupada = data_agrupada_sex, +#' dpto = "Antioquia" +#' ) +#' plot_tabla_incidencia_sex( +#' data_agrupada = incidencia_mpios$data_incidencia, +#' col_sex = "sexo" +#' ) #' } #' @export plot_tabla_incidencia_sex <- function(data_agrupada, @@ -1137,42 +1434,55 @@ plot_tabla_incidencia_sex <- function(data_agrupada, event_especiales <- obtener_val_config("special_events") cond_incidencia <- obtener_cond_inciden_event(cod_eve = data_agrupada$cod_eve[1]) - caption_tabla <- paste0(caption_tabla, " por ", - cond_incidencia$coeficiente, - " habitantes") + caption_tabla <- paste0( + caption_tabla, " por ", + cond_incidencia$coeficiente, + " habitantes" + ) nombre_event <- tolower(data_agrupada$nombre_evento[1]) data_agrupada[[col_sex]] <- stringr::str_to_title(data_agrupada[[col_sex]]) data_agrupada[["nombre_evento"]] <- stringr::str_to_title(data_agrupada[["nombre_evento"]]) data_agrupada <- data_agrupada[order(data_agrupada$incidencia, - decreasing = TRUE), ] + decreasing = TRUE + ), ] for (evento in event_especiales) { if (stringr::str_detect(nombre_event, evento$event)) { - col_nomb <- rep(stringr::str_to_title(evento$event), - nrow(data_agrupada)) + col_nomb <- rep( + stringr::str_to_title(evento$event), + nrow(data_agrupada) + ) col_cod <- rep(evento$cod_eve, nrow(data_agrupada)) data_agrupada[["nombre_evento"]] <- col_nomb data_agrupada[["cod_eve"]] <- col_cod break } } - data_tabla <- data.frame(cod_eve = data_agrupada$cod_eve, - nombre_evento = data_agrupada$nombre_evento, - sexo = data_agrupada$sexo, - incidencia = data_agrupada$incidencia) + data_tabla <- data.frame( + cod_eve = data_agrupada$cod_eve, + nombre_evento = data_agrupada$nombre_evento, + sexo = data_agrupada$sexo, + incidencia = data_agrupada$incidencia + ) tabla_sex <- kableExtra::kbl(data_tabla, - col.names = c(etiqueta_cod, - "Evento", - etiqueta_sex, - "Incidencia"), - align = "c", - caption = caption_tabla) - tabla_sex <- kableExtra::row_spec(tabla_sex, - 0, color = "white", - background = "#2274BB") - tabla_sex <- kableExtra::kable_styling(tabla_sex, - full_width = FALSE, - latex_options = "HOLD_position") + col.names = c( + etiqueta_cod, + "Evento", + etiqueta_sex, + "Incidencia" + ), + align = "c", + caption = caption_tabla + ) + tabla_sex <- kableExtra::row_spec(tabla_sex, + 0, + color = "white", + background = "#2274BB" + ) + tabla_sex <- kableExtra::kable_styling(tabla_sex, + full_width = FALSE, + latex_options = "HOLD_position" + ) return(tabla_sex) } diff --git a/R/scraping_data.R b/R/scraping_data.R index 6a91b8c7..3dc2a547 100644 --- a/R/scraping_data.R +++ b/R/scraping_data.R @@ -1,9 +1,9 @@ #' @title Obtener la ruta de descarga de una enfermedad por un a帽o espec铆fico -#' @description Funci贸n que obtiene la ruta o URL del servicio SIVIGILA para +#' @description Funci贸n que obtiene la ruta o URL de la API del SIVIGILA para #' descargar los datos de una enfermedad o evento para un a帽o espec铆fico. #' @param nombre_event Un `character` (cadena de caracteres) con el nombre de #' la enfermedad o evento. -#' @param years Un `numeric` (numerico) con el a帽o o a帽os deseado(s) para +#' @param year Un `numeric` (num茅rico) con el a帽o o a帽os deseado(s) para #' la descarga de los datos. #' @return Un `character` (cadena de caracteres) con la ruta o URL para #' descargar los datos de una enfermedad o evento por un a帽o espec铆fico de la @@ -13,18 +13,24 @@ obtener_ruta_data_event_year <- function(nombre_event, year) { ruta_base <- obtener_val_config("base_path_microdata") ruta_archivo <- obtener_val_config("file_path_microdata") ruta_archivo_params <- - obtener_val_config("file_path_parameters_microdata") + obtener_val_config("file_path_parameters_microdata") ruta_microdata <- obtener_val_config("path_microdata") ruta_query <- obtener_val_config("query_path_microdata") year <- as.character(year) nombre_event <- utils::URLencode(nombre_event) - ruta_query <- stringr::str_replace(ruta_query, stringr::fixed("_year_"), - year) - ruta_query <- stringr::str_replace(ruta_query, stringr::fixed("_disease_"), - nombre_event) - ruta_query_event <- paste0(ruta_base, - paste0(ruta_microdata, - ruta_query)) + ruta_query <- stringr::str_replace( + ruta_query, stringr::fixed("_year_"), + year + ) + ruta_query <- stringr::str_replace( + ruta_query, stringr::fixed("_disease_"), + nombre_event + ) + ruta_query_event <- paste0( + ruta_base, + ruta_microdata, + ruta_query + ) get_query_event <- realizar_peticion_http(ruta_query_event) respuesta_query_event <- httr2::resp_body_string(get_query_event) respuesta_document <- xml2::as_xml_document(respuesta_query_event) @@ -32,13 +38,20 @@ obtener_ruta_data_event_year <- function(nombre_event, year) { ref_archivo_event <- xml2::xml_text(ref_archivo_propiedad) if (length(ref_archivo_event) >= 2) { ref_archivo_event <- ref_archivo_event[ - which(stringr::str_detect(ref_archivo_event, - stringr::fixed(year)))] + which(stringr::str_detect( + ref_archivo_event, + stringr::fixed(year) + )) + ] } - ruta_archivo <- stringr::str_replace(ruta_archivo, - stringr::fixed("_filepath_"), - ref_archivo_event) - ruta_descarga_archivo <- paste0(ruta_base, - ruta_archivo, ruta_archivo_params) + ruta_archivo <- stringr::str_replace( + ruta_archivo, + stringr::fixed("_filepath_"), + ref_archivo_event + ) + ruta_descarga_archivo <- paste0( + ruta_base, + ruta_archivo, ruta_archivo_params + ) return(ruta_descarga_archivo) } diff --git a/R/theme_sivirep.R b/R/theme_sivirep.R index 973491ee..29f4be35 100644 --- a/R/theme_sivirep.R +++ b/R/theme_sivirep.R @@ -1,43 +1,62 @@ #' @title Tema sivirep #' @description Tema \pkg{ggplot2} personalizado para los reportes #' de \pkg{sivirep}. -#' @return Un objecto tema de \pkg{ggplot2}. +#' @return Un objeto tema de \pkg{ggplot2}. #' @keywords internal tema_sivirep <- function() { sysfonts::font_add_google("Montserrat", "Montserrat") showtext::showtext_auto() tema <- ggplot2::theme_classic() + - ggplot2::theme(legend.position = "right", - legend.direction = "vertical", - plot.caption = ggplot2::element_text(size = 8), - text = ggplot2::element_text(family = "Montserrat", - size = 13), - axis.title = ggplot2::element_text(face = "bold"), - legend.title = ggplot2::element_text(face = "bold")) + ggplot2::theme( + legend.position = "right", + legend.direction = "vertical", + plot.caption = ggplot2::element_text(size = 12), + text = ggplot2::element_text( + family = "Montserrat", + size = 14.5 + ), + axis.title = ggplot2::element_text(face = "bold"), + legend.title = ggplot2::element_text(face = "bold"), + plot.background = ggplot2::element_blank(), + panel.grid.major = ggplot2::element_blank(), + panel.grid.minor = ggplot2::element_blank(), + panel.border = ggplot2::element_blank(), + plot.subtitle = ggplot2::element_text(face = "bold", + hjust = 0.5) + ) return(tema) } -#' @title Obtener la estetica de una escala para un grafico de \pkg{sivirep} +#' @title Obtener la est茅tica de una escala para un gr谩fico de \pkg{sivirep} #' @description Funci贸n que genera la est茅tica de una escala para un gr谩fico #' de \pkg{sivirep}. -#' @param escala Un `numeric` (numerico) que indica la cantidad de valores que +#' @param escala Un `numeric` (num茅rico) que indica la cantidad de valores que #' contiene la escala. #' @param nombre Un `character` (cadena de caracteres) que contiene el nombre #' de la escala. #' @param etiquetas Un `character` (cadena de caracteres) que contiene las #' etiquetas de la escala. -#' @returns Un objeto `scale_fill_manual` de \pkg{ggplot2}. +#' @return Un objeto `scale_fill_manual` de \pkg{ggplot2}. #' @keywords internal obtener_estetica_escala <- function(escala = 0, nombre, - etiquetas = NULL) { - colores <- c("#2274BB", "#5ab4ac", "#d8b365", "#AC6DAD", "#D49392", - "#19AFE5", "#87C762", "#9DB2D0") + etiquetas = NULL, + ajustar_texto = FALSE) { + colores <- c( + "#2274BB", "#5ab4ac", "#d8b365", "#AC6DAD", "#D49392", + "#19AFE5", "#87C762", "#9DB2D0" + ) colores <- colores[1:escala] if (escala > 0) { - relleno_escala <- ggplot2::scale_fill_manual(values = colores, - name = nombre) + relleno_escala <- ggplot2::scale_fill_manual( + values = colores, + name = nombre + ) if (!is.null(etiquetas)) { - relleno_escala$labels <- etiquetas + relleno_escala$labels <- etiquetas + } + if (ajustar_texto) { + relleno_escala$labels <- function(x) + stringr::str_wrap(x, width = 5) } } return(relleno_escala) diff --git a/R/utils.R b/R/utils.R index c2d24801..2c482f78 100644 --- a/R/utils.R +++ b/R/utils.R @@ -1,27 +1,29 @@ #' @title Obtener los meses con mayor n煤mero de casos #' @description Funci贸n que obtiene los meses con el mayor n煤mero de casos #' @param data_event Un `data.frame` con los datos de la enfermedad -#' o vento. +#' o evento. #' @param col_fechas Un `array` (arreglo) de `character` (cadena de caracteres) #' con los nombres de las columnas que contienen las fechas en los datos de la #' enfermedad o evento. #' @param col_casos Un `character` (cadena de caracteres) con el nombre de la #' columna de los datos de la enfermedad o evento que contiene el n煤mero #' de casos; su valor por defecto es `"casos"`. -#' @param top Un `numeric` (numerico) que contiene la cantidad m谩xima +#' @param top Un `numeric` (num茅rico) que contiene la cantidad m谩xima #' de meses a retornar; su valor por defecto es `3`. -#' @param concat_vals Un `boolean` (TRUE/FALSE) que indica si se requiere +#' @param concat_vals Un `logical` (`TRUE` o `FALSE`) que indica si se requiere #' concatenar los meses como una cadena; su valor por defecto es `TRUE`. #' @return Un `data.frame` que contiene los meses con mayor n煤mero de casos. #' @examples #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(dengue2020) #' casos_inisintomas <- agrupar_fecha_inisintomas(data_limpia) -#' obtener_meses_mas_casos(data_event= casos_inisintomas, -#' col_fechas = "ini_sin", -#' col_casos = "casos", -#' top = 3, -#' concat_vals = TRUE) +#' obtener_meses_mas_casos( +#' data_event = casos_inisintomas, +#' col_fechas = "ini_sin", +#' col_casos = "casos", +#' top = 3, +#' concat_vals = TRUE +#' ) #' @export obtener_meses_mas_casos <- function(data_event, col_fechas, @@ -29,17 +31,18 @@ obtener_meses_mas_casos <- function(data_event, top = 1, concat_vals = TRUE) { validar_data_event(data_event) - stopifnot("El parametro col_fechas es obligatorio" - = !missing(col_fechas), - "El parametro col_fechas debe ser una cadena de caracteres" - = is.character(col_fechas), - "El parametro col_casos debe ser una cadena de caracteres" - = is.character(col_casos), - "El parametro top debe ser numerico" - = is.numeric(top)) + stopifnot( + "El parametro col_fechas es obligatorio" = !missing(col_fechas), + "El parametro col_fechas debe ser una cadena de caracteres" = + is.character(col_fechas), + "El parametro col_casos debe ser una cadena de caracteres" = + is.character(col_casos), + "El parametro top debe ser numerico" = is.numeric(top) + ) data_mas_casos <- - data_event[order(eval(parse(text = paste0("data_event$", col_casos))), - decreasing = TRUE), ] + data_event[order(data_event[[col_casos]], + decreasing = TRUE + ), ] if (nrow(data_mas_casos) < top) { top <- nrow(data_mas_casos) } @@ -57,44 +60,41 @@ obtener_meses_mas_casos <- function(data_event, return(etiquetas) } -#' @title Obtener fila con mayor n煤mero de casos -#' +#' @title Obtener la fila con mayor n煤mero de casos #' @description Funci贸n que obtiene la fila con el mayor n煤mero de casos. #' @param data_event Un `data.frame` que contiene los datos de la #' enfermedad o evento. #' @param nomb_col Un `character` (cadena de caracteres) con el #' nombre de la columna que contiene el n煤mero de casos en los datos de #' la enfermedad o evento. -#' @param porcentaje Un `boolean` (TRUE/FALSE) que indica si se +#' @param porcentaje Un `logical` (`TRUE` o `FALSE`) que indica si se #' requiere agregar un porcentaje de casos como columna. #' @return Un `data.frame` que contiene la fila con mayor n煤mero de casos. #' @examples #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(dengue2020) -#' casos_sex <- agrupar_sex(data_event = data_limpia, -#' porcentaje = TRUE) -#' obtener_fila_mas_casos(data_event = casos_sex, -#' nomb_col = "casos", -#' porcentaje = TRUE) +#' casos_sex <- agrupar_sex( +#' data_event = data_limpia, +#' porcentaje = TRUE +#' ) +#' obtener_fila_mas_casos( +#' data_event = casos_sex, +#' nomb_col = "casos", +#' porcentaje = TRUE +#' ) #' @export obtener_fila_mas_casos <- function(data_event, nomb_col = "casos", porcentaje = TRUE) { validar_data_event(data_event) - stopifnot("El parametro nomb_col debe ser una cadena de caracteres" - = is.character(nomb_col), - "El parametro porcentaje debe ser booleano" - = is.logical(porcentaje)) - data_mas_casos <- data_event[order(eval(parse(text = - paste0("data_event$", - nomb_col))), - decreasing = TRUE), ] - data_mas_casos <- data_mas_casos[1, ] + stopifnot( + "El parametro nomb_col debe ser una cadena de caracteres" = + is.character(nomb_col), + "El parametro porcentaje debe ser booleano" = is.logical(porcentaje) + ) + data_mas_casos <- data_event[which.max(data_event[[nomb_col]]), ] if (porcentaje) { - value_per <- - data_mas_casos$casos[1] / sum(eval(parse(text = - paste0("data_event$", - nomb_col)))) + value_per <- data_mas_casos$casos / sum(data_event[[nomb_col]]) data_mas_casos$porcentaje <- round(value_per * 100, 2) } return(data_mas_casos) @@ -105,11 +105,11 @@ obtener_fila_mas_casos <- function(data_event, #' espec铆fico. #' @param vals Un `array` (arreglo) de character (cadena de caracteres) #' que contiene los valores que se desean concatenar. -#' @param longitud Un `numeric` (numerico) que contiene la longitud de +#' @param longitud Un `numeric` (num茅rico) que contiene la longitud de #' los valores que se desean concatenar; su valor por defecto es `3`. #' @param princ_token Un `character` (cadena de caracteres) que contiene el #' separador o token principal; su valor por defecto es `", "`. -#' @param final_token Un `character` (cadena de caracteres) que contien el +#' @param final_token Un `character` (cadena de caracteres) que contiene el #' separador o token final; su valor por defecto es `"y "`. #' @return Un `character` (cadena de caracteres) con el valor final #' concatenado. @@ -117,26 +117,19 @@ obtener_fila_mas_casos <- function(data_event, concatenar_vals_token <- function(vals, longitud = 3, princ_token = ", ", - final_token = "y ") { - stopifnot("El parametro vals es obligatorio" = - !missing(vals), - "El parametro vals debe ser una cadena de caracteres o - un arreglo de cadenas de caracteres" - = is.character(vals), - "El parametro princ_token debe ser una cadena de caracteres" - = is.character(princ_token), - "El parametro final_token debe ser una cadena de caracteres" - = is.character(final_token)) - final_val <- "" - i <- 1 - for (value in vals) { - if (i != longitud) { - final_val <- paste0(final_val, value, princ_token) - } else { - final_val <- paste0(final_val, final_token, value) - } - i <- i + 1 - } + final_token = "y") { + stopifnot( + "El parametro vals es obligatorio" = + !missing(vals), + "El parametro vals debe ser una cadena de caracteres o + un arreglo de cadenas de caracteres" = is.character(vals), + "El parametro princ_token debe ser una cadena de caracteres" = + is.character(princ_token), + "El parametro final_token debe ser una cadena de caracteres" = + is.character(final_token) + ) + final_val <- paste(vals[seq_len(longitud - 1)], collapse = princ_token) + final_val <- paste(final_val, final_token, vals[longitud]) return(final_val) } @@ -144,7 +137,7 @@ concatenar_vals_token <- function(vals, #' enfermedad o evento #' @description Funci贸n que obtiene las columnas de ocurrencia geogr谩fica #' de los datos de la enfermedad o evento. -#' @param cod_event Un `numeric` (numerico) o `character` +#' @param cod_event Un `numeric` (num茅rico) o `character` #' (cadena de caracteres) que contiene el c贸digo de la enfermedad o evento. #' @param nombre_event Un `character` (cadena de caracteres) con el nombre de #' la enfermedad o evento. @@ -154,34 +147,44 @@ concatenar_vals_token <- function(vals, #' obtener_tip_ocurren_geo(cod_event = 210) #' @export obtener_tip_ocurren_geo <- function(cod_event = NULL, nombre_event = NULL) { - stopifnot("Debe ingresar algun valor en cod_event o nombre_event" - = !(is.null(cod_event) && is.null(nombre_event))) + stopifnot( + "El parametro cod_event o nombre_event no debe estar vacio" = + !(is.null(cod_event) && is.null(nombre_event)) + ) geo_occurren <- obtener_val_config(llave = "occurrence_geo_diseases") col_ocurren <- c("cod_dpto_o", "cod_mun_o", "ocurrencia") param_busqueda <- NULL if (!is.null(cod_event)) { - param_busqueda <- cod_event - stopifnot("El parametro cod_event debe ser una cadena de caracteres o + param_busqueda <- cod_event + stopifnot( + "El parametro cod_event debe ser una cadena de caracteres o numerico" = - (is.numeric(cod_event) && !is.character(cod_event)) || - (!is.numeric(cod_event) && is.character(cod_event))) + (is.numeric(cod_event) && !is.character(cod_event)) || + (!is.numeric(cod_event) && is.character(cod_event)) + ) } if (!is.null(nombre_event)) { - stopifnot("El parametro nombre_event debe ser una cadena de caracteres" - = is.character(nombre_event)) - param_busqueda <- nombre_event + stopifnot( + "El parametro nombre_event debe ser una cadena de caracteres" = + is.character(nombre_event) + ) + param_busqueda <- toupper(nombre_event) } - if (length(grep(param_busqueda, geo_occurren$cod_dpto_n)) == 1 - && grep(param_busqueda, geo_occurren$cod_dpto_n) > 0) { - col_ocurren <- c("cod_dpto_n", "departamento_notificacion", - "cod_mun_n", "municipio_notificacion", "notificacion") - } else if (length(grep(param_busqueda, geo_occurren$cod_dpto_r)) == 1 - && grep(param_busqueda, geo_occurren$cod_dpto_r) > 0) { - col_ocurren <- c("cod_dpto_r", "departamento_residencia", - "cod_mun_r", "municipio_residencia", "residencia") + if (length(grep(param_busqueda, geo_occurren$cod_dpto_n)) == 1) { + col_ocurren <- c( + "cod_dpto_n", "departamento_notificacion", + "cod_mun_n", "municipio_notificacion", "notificacion" + ) + } else if (length(grep(param_busqueda, geo_occurren$cod_dpto_r)) == 1) { + col_ocurren <- c( + "cod_dpto_r", "departamento_residencia", + "cod_mun_r", "municipio_residencia", "residencia" + ) } else { - col_ocurren <- c("cod_dpto_o", "departamento_ocurrencia", - "cod_mun_o", "municipio_ocurrencia", "ocurrencia") + col_ocurren <- c( + "cod_dpto_o", "departamento_ocurrencia", + "cod_mun_o", "municipio_ocurrencia", "ocurrencia" + ) } return(col_ocurren) } @@ -189,10 +192,10 @@ obtener_tip_ocurren_geo <- function(cod_event = NULL, nombre_event = NULL) { #' @title Obtener informaci贸n geogr谩fica de los datos de la enfermedad o evento #' @description Funci贸n que obtiene la informaci贸n geogr谩fica de los datos de #' la enfermedad o evento. -#' @param dpto Un `character` (cadena de caracteres) o `numeric` (numerico) +#' @param dpto Un `character` (cadena de caracteres) o `numeric` (num茅rico) #' que contiene el nombre o c贸digo del departamento; su valor por defecto #' es `NULL`. -#' @param mpio Un `character` (cadena de caracteres) o `numeric` (numerico) +#' @param mpio Un `character` (cadena de caracteres) o `numeric` (num茅rico) #' que contiene el nombre o c贸digo del municipio; su valor por defecto #' es `NULL`. #' @return Un `data.frame` con la informaci贸n geogr谩fica de los datos de @@ -207,50 +210,60 @@ obtener_tip_ocurren_geo <- function(cod_event = NULL, nombre_event = NULL) { #' obtener_info_depts(dpto = "bogota dc", mpio = "bogota dc") #' @export obtener_info_depts <- function(dpto = NULL, mpio = NULL) { - stopifnot("El parametro dpto es obligatorio" = - !missing(dpto), - "El parametro dpto debe ser una cadena de caracteres o - un numero" = - is.character(dpto) || is.numeric(dpto)) + stopifnot( + "El parametro dpto es obligatorio" = + !missing(dpto), + "El parametro dpto debe ser una cadena de caracteres o + numerico" = + is.character(dpto) || is.numeric(dpto) + ) data_geo <- import_geo_cods() - data_dpto <- NULL dpto_busqueda <- dpto col_dpto <- "nombre_departamento" if (is.numeric(dpto_busqueda) || - !is.na(suppressWarnings(as.numeric(dpto_busqueda)))) { + !is.na(suppressWarnings(as.numeric(dpto_busqueda)))) { col_dpto <- "codigo_departamento" - dpto_busqueda <- format_cod_geo(cod_geo = dpto_busqueda, - etiqueta = "departamento", - digitos = 2, tam = 2) + dpto_busqueda <- format_cod_geo( + cod_geo = dpto_busqueda, + etiqueta = "departamento", + digitos = 2, tam = 2 + ) } list_dptos <- unique(data_geo[[col_dpto]]) - dpto_busqueda <- tolower(dpto_busqueda) + dpto_busqueda <- tolower(dpto_busqueda) dpto_busqueda <- epitrix::clean_labels(dpto_busqueda) list_specific <- - list_dptos[stringr::str_detect(list_dptos, dpto_busqueda)] + list_dptos[stringr::str_detect(list_dptos, dpto_busqueda)] if (length(list_specific) > 1) { - warning("Dos o mas departamentos coinciden con el nombre o ", - "codigo ingresado: ", - dpto, " se tomara el valor de la primera coincidencia ", - "encontrada") - data_dpto <- dplyr::filter(data_geo, - .data[[col_dpto]] == dpto_busqueda) + warning( + "Dos o mas departamentos coinciden con el nombre o ", + "codigo ingresado: ", + dpto, " se tomara el valor de la primera coincidencia ", + "encontrada" + ) + data_dpto <- dplyr::filter( + data_geo, + .data[[col_dpto]] == dpto_busqueda + ) } else { data_dpto <- dplyr::filter(data_geo, .data[[col_dpto]] %in% - list_specific) + list_specific) } if (!is.null(mpio)) { - stopifnot("El parametro mpio debe ser una cadena de caracteres o un - numero" - = is.character(mpio) || is.numeric(mpio)) + stopifnot( + "El parametro mpio debe ser una cadena de caracteres o + numerico" = is.character(mpio) || is.numeric(mpio) + ) mpio_busqueda <- mpio col_mpio <- "nombre_municipio" if (is.numeric(mpio_busqueda) || - !is.na(suppressWarnings(as.numeric(mpio_busqueda)))) { + !is.na(suppressWarnings(as.numeric(mpio_busqueda)))) { col_mpio <- "codigo_municipio" - mpio_busqueda <- format_cod_geo(cod_geo = mpio_busqueda, - etiqueta = "municipio", - digitos = 3, tam = 5) + mpio_busqueda <- format_cod_geo( + cod_geo = mpio_busqueda, + etiqueta = "municipio", + digitos = 3, tam = 5 + ) } if (nchar(mpio_busqueda) == 3) { mpio_busqueda <- paste0(dpto_busqueda, mpio_busqueda) @@ -258,18 +271,24 @@ obtener_info_depts <- function(dpto = NULL, mpio = NULL) { mpio_busqueda <- tolower(mpio_busqueda) mpio_busqueda <- epitrix::clean_labels(mpio_busqueda) data_dpto <- - data_dpto[which(stringr::str_detect(data_dpto[[col_mpio]], - mpio_busqueda)), ] - data_mpio <- dplyr::filter(data_dpto, - data_dpto[[col_mpio]] == mpio_busqueda) + data_dpto[which(stringr::str_detect( + data_dpto[[col_mpio]], + mpio_busqueda + )), ] + data_mpio <- dplyr::filter( + data_dpto, + data_dpto[[col_mpio]] == mpio_busqueda + ) if (nrow(data_mpio) == 1) { - data_dpto <- data_mpio + data_dpto <- data_mpio } if (nrow(data_dpto) > 1) { - warning("Dos o mas municipios coinciden con el nombre o ", - "codigo ingresado: ", - mpio, " se tomara el valor de la primera coincidencia ", - "encontrada") + warning( + "Dos o mas municipios coinciden con el nombre o ", + "codigo ingresado: ", + mpio, " se tomara el valor de la primera coincidencia ", + "encontrada" + ) data_dpto <- data_dpto[1, ] } } @@ -292,7 +311,7 @@ obtener_dptos <- function() { #' Colombia a partir de su c贸digo geogr谩fico. #' @param data_geo Un `data.frame` que contiene los c贸digos #' geogr谩ficos (departamentos y municipios de Colombia). -#' @param cod_dpto Un `numeric` (numerico) o `character` +#' @param cod_dpto Un `numeric` (num茅rico) o `character` #' (cadena de caracteres) que contiene el c贸digo #' del departamento. #' @return Un `character` (cadena de caracteres) con el nombre del @@ -300,81 +319,101 @@ obtener_dptos <- function() { #' @examples #' data_geo <- import_geo_cods() #' obtener_nombre_dpto(data_geo, -#' cod_dpto = "05") +#' cod_dpto = "05" +#' ) #' obtener_nombre_dpto(data_geo, -#' cod_dpto = 05) +#' cod_dpto = 05 +#' ) #' obtener_nombre_dpto(data_geo, -#' cod_dpto = 5) +#' cod_dpto = 5 +#' ) #' @export obtener_nombre_dpto <- function(data_geo, cod_dpto) { - stopifnot("El parametro data_geo es obligatorio" = - !missing(data_geo), - "El parametro data_geo debe ser un data.frame" = - is.data.frame(data_geo), - "El parametro data_geo no debe estar vacio" = - nrow(data_geo) > 0, - "El parametro cod_dpto es obligatorio" = - !missing(cod_dpto), - "El parametro cod_dpto debe ser una cadena de caracteres + stopifnot( + "El parametro data_geo es obligatorio" = + !missing(data_geo), + "El parametro data_geo debe ser un data.frame" = + is.data.frame(data_geo), + "El parametro data_geo no debe estar vacio" = + nrow(data_geo) > 0, + "El parametro cod_dpto es obligatorio" = + !missing(cod_dpto), + "El parametro cod_dpto debe ser una cadena de caracteres o numerico" = - (is.numeric(cod_dpto) && !is.character(cod_dpto)) || - (!is.numeric(cod_dpto) && is.character(cod_dpto))) - cod_dpto <- format_cod_geo(cod_geo = cod_dpto, etiqueta = "departamento", - digitos = 2, tam = 2) - data_dpto <- dplyr::filter(data_geo, - .data$codigo_departamento %in% cod_dpto) + (is.numeric(cod_dpto) && !is.character(cod_dpto)) || + (!is.numeric(cod_dpto) && is.character(cod_dpto)) + ) + cod_dpto <- format_cod_geo( + cod_geo = cod_dpto, etiqueta = "departamento", + digitos = 2, tam = 2 + ) + data_dpto <- dplyr::filter( + data_geo, + .data$codigo_departamento %in% cod_dpto + ) data_dpto <- data_dpto[1, ] return(data_dpto$nombre_departamento) } #' @title Obtener el nombre de un municipio de Colombia #' @description Funci贸n que obtiene el nombre de un municipio de Colombia a -#' partir de su c贸digo geogr谩fico +#' partir de su c贸digo geogr谩fico. #' @param data_geo Un `data.frame` que contiene los c贸digos geogr谩ficos #' (departamentos y municipios de Colombia). -#' @param cod_dpto Un `numeric` (numerico) o `character` (cadena de caracteres) +#' @param cod_dpto Un `numeric` (num茅rico) o `character` (cadena de caracteres) #' que contiene el c贸digo del departamento. -#' @param cod_mpio Un `numeric` (numerico) o `character` +#' @param cod_mpio Un `numeric` (num茅rico) o `character` #' (cadena de caracteres) que contiene el c贸digo del municipio. #' @return Un `character` (cadena de caracteres) con el nombre del municipio. #' @examples #' data_geo <- import_geo_cods() #' obtener_nombre_mpio(data_geo, -#' cod_dpto = "05", -#' cod_mpio = "001") +#' cod_dpto = "05", +#' cod_mpio = "001" +#' ) #' obtener_nombre_mpio(data_geo, -#' cod_dpto = 05, -#' cod_mpio = 001) +#' cod_dpto = 05, +#' cod_mpio = 001 +#' ) #' obtener_nombre_mpio(data_geo, -#' cod_dpto = 5, -#' cod_mpio = 1) +#' cod_dpto = 5, +#' cod_mpio = 1 +#' ) #' @export obtener_nombre_mpio <- function(data_geo, cod_dpto, cod_mpio) { - stopifnot("El parametro data_geo es obligatorio" = - !missing(data_geo), - "El parametro data_geo debe ser un data.frame" = - is.data.frame(data_geo), - "El parametro data_geo no debe estar vacio" = - nrow(data_geo) > 0, - "El parametro cod_dpto es obligatorio" = - !missing(cod_dpto), - "El parametro cod_dpto debe ser una cadena de caracteres + stopifnot( + "El parametro data_geo es obligatorio" = + !missing(data_geo), + "El parametro data_geo debe ser un data.frame" = + is.data.frame(data_geo), + "El parametro data_geo no debe estar vacio" = + nrow(data_geo) > 0, + "El parametro cod_dpto es obligatorio" = + !missing(cod_dpto), + "El parametro cod_dpto debe ser una cadena de caracteres o numerico" = - (is.numeric(cod_dpto) && !is.character(cod_dpto)) || - (!is.numeric(cod_dpto) && is.character(cod_dpto)), - "El parametro cod_mpio es obligatorio" = - !missing(cod_mpio), - "El parametro cod_mpio debe ser una cadena de caracteres + (is.numeric(cod_dpto) && !is.character(cod_dpto)) || + (!is.numeric(cod_dpto) && is.character(cod_dpto)), + "El parametro cod_mpio es obligatorio" = + !missing(cod_mpio), + "El parametro cod_mpio debe ser una cadena de caracteres o numerico" = - (is.numeric(cod_mpio) && !is.character(cod_mpio)) || - (!is.numeric(cod_mpio) && is.character(cod_mpio))) - cod_dpto <- format_cod_geo(cod_geo = cod_dpto, etiqueta = "departamento", - digitos = 2, tam = 2) - cod_mpio <- format_cod_geo(cod_geo = cod_mpio, etiqueta = "municipio", - digitos = 3, tam = 5) + (is.numeric(cod_mpio) && !is.character(cod_mpio)) || + (!is.numeric(cod_mpio) && is.character(cod_mpio)) + ) + cod_dpto <- format_cod_geo( + cod_geo = cod_dpto, etiqueta = "departamento", + digitos = 2, tam = 2 + ) + cod_mpio <- format_cod_geo( + cod_geo = cod_mpio, etiqueta = "municipio", + digitos = 3, tam = 5 + ) cod_mpio <- paste0(cod_dpto, cod_mpio) - data_mpio <- dplyr::filter(data_geo, - .data$codigo_municipio %in% cod_mpio) + data_mpio <- dplyr::filter( + data_geo, + .data$codigo_municipio %in% cod_mpio + ) data_mpio <- data_mpio[1, ] return(data_mpio$nombre_municipio) } @@ -382,7 +421,7 @@ obtener_nombre_mpio <- function(data_geo, cod_dpto, cod_mpio) { #' @title Obtener los eventos relacionados #' @description Funci贸n que obtiene los eventos relacionados o tipos de un #' evento principal. -#' @param years Un `numeric` (numerico) el a帽o o a帽os deseados para +#' @param years Un `numeric` (num茅rico) con el a帽o o a帽os deseados para #' la descarga de los datos. #' @param nombre_event Un `character` (cadena de caracteres) con el #' nombre de la enfermedad o evento. @@ -392,13 +431,19 @@ obtener_nombre_mpio <- function(data_geo, cod_dpto, cod_mpio) { obtener_eventos_relacionados <- function(nombre_event, years) { list_events <- list_events() grupo_events <- - list_events[which(stringr::str_detect(list_events$enfermedad, - substr(nombre_event, - 1, - nchar(nombre_event) - 1))), ] + list_events[which(stringr::str_detect( + list_events$enfermedad, + gsub("([()])", "\\\\\\1", substr( + nombre_event, + 1, + nchar(nombre_event) - 1 + )) + )), ] list_events_relacionados <- obtener_val_config(llave = "related_diseases") - list_events_relacionados <- lapply(list_events_relacionados, - stringr::str_to_title) + list_events_relacionados <- lapply( + list_events_relacionados, + stringr::str_to_title + ) if (length(list_events_relacionados) > 0) { events_relacionados <- list_events_relacionados[[nombre_event]] for (year in years) { @@ -407,19 +452,25 @@ obtener_eventos_relacionados <- function(nombre_event, years) { list_events[which(list_events$enfermedad == event), ] if (is.null(grupo_events) || nrow(grupo_events) == 0) { warning("La enfermedad o evento relacionado: ", - event, - "no esta disponible para su descarga", call. = FALSE) - } else if (stringr::str_detect(grupo_events_relacionados$aa, - as.character(year))) { + event, + " no esta disponible para su descarga", + call. = FALSE + ) + } else if (stringr::str_detect( + grupo_events_relacionados$aa, + as.character(year))) { + grupo_events <- c(grupo_events, list(grupo_events_relacionados)) + } else { warning("El year: ", year, - "de la enfermedad o evento relacionado: ", + " de la enfermedad o evento relacionado: ", event, - "no esta disponible para su descarga", call. = FALSE) - } else { - grupo_events <- rbind(grupo_events, grupo_events_relacionados) + " no esta disponible para su descarga", + call. = FALSE + ) } } } + grupo_events <- dplyr::bind_rows(grupo_events) } return(grupo_events) } @@ -429,7 +480,7 @@ obtener_eventos_relacionados <- function(nombre_event, years) { #' @description Funci贸n que obtiene las condiciones del numerador, #' denominador y coeficiente de m煤ltiplicaci贸n para calcular la incidencia #' de un evento. -#' @param cod_eve Un `numeric` (numerico) o `character` (cadena de +#' @param cod_eve Un `numeric` (num茅rico) o `character` (cadena de #' caracteres) que contiene el c贸digo de una enfermedad o evento. #' @return Un `data.frame` con las condiciones para calcular la #' incidencia de una enfermedad o evento. @@ -437,23 +488,24 @@ obtener_eventos_relacionados <- function(nombre_event, years) { #' obtener_cond_inciden_event(cod_eve = 210) #' @export obtener_cond_inciden_event <- function(cod_eve) { - stopifnot("El parametro cod_eve es obligatorio" = - !missing(cod_eve), - "El parametro cod_eve debe ser una cadena de caracteres o + stopifnot( + "El parametro cod_eve es obligatorio" = + !missing(cod_eve), + "El parametro cod_eve debe ser una cadena de caracteres o un numerico" = - (is.numeric(cod_eve) && !is.character(cod_eve)) || - (!is.numeric(cod_eve) && is.character(cod_eve))) - incidencia_eventos <- NULL - condiciones <- NULL + (is.numeric(cod_eve) && !is.character(cod_eve)) || + (!is.numeric(cod_eve) && is.character(cod_eve)) + ) ruta_extdata <- system.file("extdata", package = "sivirep") ruta_data <- obtener_val_config(llave = "incidence_events_file_name") - load(file.path(ruta_extdata, ruta_data)) - condiciones <- incidencia_eventos + condiciones <- readRDS(file.path(ruta_extdata, ruta_data)) vals_event <- condiciones[condiciones$cod_eve == as.numeric(cod_eve), ] if (nrow(vals_event) == 0) { aux_event <- - data.frame(cod_eve, "casos", "NA", "proyecciones", "NA", "10000", - stringsAsFactors = FALSE) + data.frame(cod_eve, "casos", "NA", "proyecciones", "NA", + 10000L, + stringsAsFactors = FALSE + ) names(aux_event) <- names(vals_event) return(aux_event) } @@ -485,8 +537,10 @@ obtener_dpto_mpio <- function(data_agrupada, nomb_cols, if (!is.null(dpto) && dpto != "01") { dept_data <- obtener_info_depts(dpto, mpio) if (nrow(dept_data) == 0) { - warning("El departamento o municipio ingresado no existe, ", - "dpto: ", dpto, " , mpio: ", mpio) + warning( + "El departamento o municipio ingresado no existe, ", + "dpto: ", dpto, " , mpio: ", mpio + ) } dept_data <- dept_data[1, ] dpto <- dept_data$codigo_departamento @@ -495,11 +549,11 @@ obtener_dpto_mpio <- function(data_agrupada, nomb_cols, } unidades_geo <- list(dpto = dpto, mpio = mpio) } else if (nomb_cols[1] %in% colnames(data_agrupada) && - dplyr::n_distinct(data_agrupada[[nomb_cols[1]]]) == 1) { + dplyr::n_distinct(data_agrupada[[nomb_cols[1]]]) == 1) { dpto <- data_agrupada[[nomb_cols[1]]][1] if (is.null(mpio) && - nomb_cols[3] %in% colnames(data_agrupada) && - dplyr::n_distinct(data_agrupada[[nomb_cols[3]]]) == 1) { + nomb_cols[3] %in% colnames(data_agrupada) && + dplyr::n_distinct(data_agrupada[[nomb_cols[3]]]) == 1) { mpio <- data_agrupada[[nomb_cols[3]]][1] } unidades_geo <- list(dpto = dpto, mpio = mpio) @@ -510,63 +564,81 @@ obtener_dpto_mpio <- function(data_agrupada, nomb_cols, #' @title Obtener la poblaci贸n para efectuar el c谩lculo de la incidencia #' @description Funci贸n que obtiene la poblaci贸n a riesgo de un evento o #' enfermedad o las proyecciones poblacionales DANE desde el a帽o 2005 hasta -#' el 2035. -#' Si no hay poblaci贸n a riesgo disponible del evento o enfermedad para el a帽o -#' seleccionado se obtendr谩 las proyecciones poblacionales DANE y se mostrar谩n -#' mensajes de advertencia al usuario dependendiendo del tipo de poblaci贸n +#' el 2035. Si no hay poblaci贸n a riesgo disponible del evento o enfermedad +#' para el a帽o seleccionado, se obtendr谩n las proyecciones poblacionales DANE +#' y se mostrar谩n mensajes al usuario dependendiendo del tipo de poblaci贸n #' obtenida. #' @param data_incidencia Un `data.frame` que contiene la poblaci贸n a riesgo o #' las proyecciones poblaciones DANE. Si este par谩metro est谩 vac铆o importar谩 #' la poblaci贸n a riesgo o las proyecciones dependiendo de la disponibilidad de -#' la informaci贸n y las condiciones del evento o engermedad; su valor por +#' la informaci贸n y las condiciones del evento o enfermedad; su valor por #' defecto es `NULL`. #' @param poblacion Un `character` (cadena de caracteres) con el tipo de -#' poblaci贸n que se desea obtener. Indica si se desea obtener la poblaci贸n -#' a riesgo del evento `"riesgo"` o las proyecciones poblacionales DANE -#' `"proyecciones"`. -#' @param event Un `character` (cadena de caracteres) o un `numeric` (numerico) +#' poblaci贸n que se desea obtener. Puede ser `"riesgo"` para la poblaci贸n +#' a riesgo del evento o `"proyecciones"` para las proyecciones poblacionales +#' DANE. +#' @param event Un `character` (cadena de caracteres) o un `numeric` (num茅rico) #' con el nombre o c贸digo de la enfermedad o evento. Es obligatorio para #' obtener la poblaci贸n a riesgo. -#' @param year Un `numeric` (numerico) con el a帽o deseado de la poblaci贸n a +#' @param year Un `numeric` (num茅rico) con el a帽o deseado de la poblaci贸n a #' riesgo. Es obligatorio para obtener la poblaci贸n a riesgo. +#' @inheritParams import_pob_incidencia #' @return Un `data.frame` con la poblaci贸n a riesgo o las proyecciones -#' poblacionaldes DANE. +#' poblacionales DANE. #' @keywords internal obtener_pob_incidencia <- function(data_incidencia = NULL, poblacion, event, - year) { + year, + ruta_dir = NULL, + cache = FALSE) { if (is.null(data_incidencia)) { - data_incidencia <- import_pob_incidencia(poblacion = poblacion, - event = event, - year = year) + data_incidencia <- import_pob_incidencia( + poblacion = poblacion, + event = event, + year = year + ) if (poblacion == "riesgo") { if (!is.null(data_incidencia)) { - message("Las incidencias se calcularan con la poblacion a ", - "riesgo definida por el Ministerio de Salud para ", - "el ", year) + message( + "Las incidencias se calcularon con la poblacion a ", + "riesgo definida por el Ministerio de Salud para ", + "el ", year + ) } else { poblacion <- "proyecciones" - data_incidencia <- import_pob_incidencia(poblacion = poblacion) - message("Las incidencias se calcularan con las proyecciones ", - "poblacionales DANE. Si usted cuenta con la ", - "poblacion a riesgo definida por el Ministerio de ", - "Salud para el ", year, " puede hacer uso de ella, ", - "asignandola en el argumento data_incidencia de la funcion") + data_incidencia <- import_pob_incidencia( + poblacion = poblacion, + cache = cache, + year = year + ) + message( + "Las incidencias se calcularon con las proyecciones ", + "poblacionales DANE. Si usted cuenta con la ", + "poblacion a riesgo definida por el Ministerio de ", + "Salud para el ", year, " puede hacer uso de ella, ", + "asignandola en el argumento data_incidencia de la funcion" + ) } } else { - message("Las incidencias que va a generar idealmente deberian estar ", - "calculadas por poblacion a riesgo. Para esto, puede usar ", - "el argumento poblacion = 'riesgo'") + message( + "Las incidencias que va a generar idealmente deberian estar ", + "calculadas por poblacion a riesgo. Para esto, puede usar ", + "el argumento poblacion = 'riesgo'" + ) } } else { - stopifnot("El parametro data_incidencia debe ser un data.frame" = - is.data.frame(data_incidencia), - "El parametro data_incidencia no debe estar vacio" = - nrow(data_incidencia) > 0) + stopifnot( + "El parametro data_incidencia debe ser un data.frame" = + is.data.frame(data_incidencia), + "El parametro data_incidencia no debe estar vacio" = + nrow(data_incidencia) > 0 + ) } - pop_data_incidencia <- list(data_incidencia = data_incidencia, - poblacion = poblacion) + pop_data_incidencia <- list( + data_incidencia = data_incidencia, + poblacion = poblacion + ) return(pop_data_incidencia) } @@ -575,70 +647,79 @@ obtener_pob_incidencia <- function(data_incidencia = NULL, #' evento. #' @param data_event Un `data.frame` que contiene los datos de la #' enfermedad o evento. +#' @return Un `numeric` (num茅rico) que representa el a帽o de los datos de la +#' enfermedad o evento. #' @keywords internal obtener_year <- function(data_event) { - year <- NULL nomb_col <- "ano" - if (!is.null(data_event)) { - if (nomb_col %in% colnames(data_event)) { - year <- unique(data_event[[nomb_col]]) - stopifnot("Los datos del evento o enfermedad tienen informacion de mas - de un year, no es posible inferir el year que debe tomar la - funcion para su ejecucion. Por favor indique el valor en el - parametro year" = - length(year) == 1) - } else { - stopifnot("Los datos del evento o enfermedad no contienen la variable - o columna ano. Por favor indique el valor en el parametro year - para ejecutar la funcion" = - length(year) == 1) - } + if (!nomb_col %in% colnames(data_event)) { + stop( + "Los datos del evento o enfermedad no contienen la variable ", + "o columna ano. Por favor indique el valor en el parametro year ", + "para ejecutar la funcion" + ) } + year <- unique(data_event[[nomb_col]][!is.na(data_event[[nomb_col]])]) + stopifnot( + "Los datos del evento o enfermedad tienen informacion de mas + de un year, no es posible inferir el year que debe tomar la + funcion para su ejecucion. Por favor indique el valor en el + parametro year" = + length(year) == 1 + ) return(year) } -#' @title Obtener el parr谩fo de la distribuci贸n de casos por sexo -#' @description Funci贸n que obtiene el parr谩fo descriptivo de la secci贸n +#' @title Obtener el p谩rrafo de la distribuci贸n de casos por sexo +#' @description Funci贸n que obtiene el p谩rrafo descriptivo de la secci贸n #' de distribuci贸n de casos por sexo de la plantilla del reporte. #' @param data_agrupada Un `data.frame` que contiene los datos #' de la enfermedad o evento agrupados por sexo. -#' @param year Un `numeric` (numerico) con el a帽o de los datos +#' @param year Un `numeric` (num茅rico) con el a帽o de los datos #' agrupados por sexo. -#' @param figura Un `numeric` (numerico) con el n煤mero de la +#' @param figura Un `numeric` (num茅rico) con el n煤mero de la #' figura de la distribuci贸n de casos por sexo. +#' @return Un `character` (cadena de caracteres) con el p谩rrafo descriptivo +#' de la distribuci贸n de casos por sexo. #' @examples #' data(dengue2020) #' data_limpia <- limpiar_data_sivigila(dengue2020) -#' data_agrupada <- agrupar_sex(data_event = data_limpia, -#' porcentaje = TRUE) +#' data_agrupada <- agrupar_sex( +#' data_event = data_limpia, +#' porcentaje = TRUE +#' ) #' obtener_text_sex(data_agrupada, year = 2020, figura = 3) #' @export obtener_text_sex <- function(data_agrupada, year, figura) { validar_data_agrupada(data_agrupada) - stopifnot("El parametro year debe ser un numerico" - = is.numeric(year)) + stopifnot( + "El parametro year debe ser numerico" = is.numeric(year) + ) nombre_evento <- tolower(data_agrupada$nombre_evento[1]) femenino <- 0 masculino <- 0 tam <- seq_len(nrow(data_agrupada)) - text_sex <- NULL - if (stringr::str_detect(nombre_evento, - stringr::fixed("malaria"))) { + if (stringr::str_detect( + nombre_evento, + stringr::fixed("malaria") + )) { for (fila in tam) { sex_fila <- data_agrupada[fila, ] indices_femenino <- which(data_agrupada$sexo == "F" & - data_agrupada$nombre_evento == - sex_fila$nombre_evento) + data_agrupada$nombre_evento == + sex_fila$nombre_evento) porcentaje_femenino <- data_agrupada[indices_femenino, ]$porcentaje indices_masculino <- which(data_agrupada$sexo == "M" & - data_agrupada$nombre_evento == - sex_fila$nombre_evento) + data_agrupada$nombre_evento == + sex_fila$nombre_evento) porcentaje_masculino <- data_agrupada[indices_masculino, ]$porcentaje - data_agrupada <- data_agrupada[-c(indices_femenino, - indices_masculino), ] + data_agrupada <- data_agrupada[-c( + indices_femenino, + indices_masculino + ), ] tam <- seq_len(nrow(data_agrupada)) fila <- 1 if (isTRUE(porcentaje_femenino < porcentaje_masculino)) { @@ -653,34 +734,40 @@ obtener_text_sex <- function(data_agrupada, sexo_mayor <- "masculino" sexo_menor <- "femenino" } - text_sex <- paste0("En el total de casos para ", year, - " se observa una predominancia del sexo ", - sexo_mayor, " respecto al sexo ", sexo_menor, - " (Ver Figura", figura, ").") + text_sex <- paste0( + "En el total de casos para ", year, + " se observa una predominancia del sexo ", + sexo_mayor, " respecto al sexo ", sexo_menor, + " (Ver Figura", figura, ")." + ) } else { porcentaje_femenino <- data_agrupada[which(data_agrupada$sexo == "F" & - data_agrupada$nombre_evento == - toupper(nombre_evento)), ]$porcentaje + data_agrupada$nombre_evento == + toupper(nombre_evento)), ]$porcentaje porcentaje_masculino <- data_agrupada[which(data_agrupada$sexo == "M" & - data_agrupada$nombre_evento == - toupper(nombre_evento)), ]$porcentaje + data_agrupada$nombre_evento == + toupper(nombre_evento)), ]$porcentaje sexo_mayor <- c("femenino", porcentaje_femenino) sexo_menor <- c("masculino", porcentaje_masculino) if (isTRUE(porcentaje_femenino < porcentaje_masculino)) { sexo_mayor <- c("masculino", porcentaje_masculino) sexo_menor <- c("femenino", porcentaje_femenino) } - text_sex <- paste0("En el total de casos para ", year, - " se observa una predominancia del sexo ", - sexo_mayor[1], " con ", sexo_mayor[2], "%", - " respecto al sexo ", sexo_menor[1], " con ", - sexo_menor[2], "% ", "(Ver Figura ", figura, - ").") + text_sex <- paste0( + "En el total de casos para ", year, + " se observa una predominancia del sexo ", + sexo_mayor[1], " con ", sexo_mayor[2], "%", + " respecto al sexo ", sexo_menor[1], " con ", + sexo_menor[2], "% ", "(Ver Figura ", figura, + ")." + ) } - text_values <- list(text = text_sex, mayor = sexo_mayor, - menor = sexo_menor) + text_values <- list( + text = text_sex, mayor = sexo_mayor, + menor = sexo_menor + ) return(text_values) } @@ -695,11 +782,14 @@ obtener_text_sex <- function(data_agrupada, #' obtener_val_config("request_timeout") #' @export obtener_val_config <- function(llave) { - valor <- config::get(file = - system.file("extdata", - "config.yml", - package = "sivirep"), - llave) + valor <- config::get( + file = + system.file("extdata", + "config.yml", + package = "sivirep" + ), + llave + ) return(valor) } @@ -716,18 +806,18 @@ obtener_val_config <- function(llave) { #' geogr谩fica de los datos de la enfermedad o evento. #' @param shp Objeto que contiene el`Shapefile` del mapa. #' @return Una `named list` (lista nombrada) que contiene el departamento, -#' municipio y el poligono para generar el mapa con los siguientes +#' municipio y el pol铆gono para generar el mapa con los siguientes #' nombres para cada uno de estos elementos: `dpto`, `mpio` y `poligono`. #' @keywords internal obtener_config_map <- function(data_agrupada, dpto, mpio, geo_ocurrencia, shp) { polygon_seleccionado <- shp if (is.null(dpto) && - geo_ocurrencia[1] %in% names(data_agrupada)) { + geo_ocurrencia[1] %in% names(data_agrupada)) { aux_dpto <- unique(data_agrupada[[geo_ocurrencia[1]]]) aux_mpio <- NULL if (is.null(mpio) && - geo_ocurrencia[3] %in% names(data_agrupada)) { + geo_ocurrencia[3] %in% names(data_agrupada)) { aux_mpio <- unique(data_agrupada[[geo_ocurrencia[3]]]) if (length(aux_mpio) == 1) { mpio <- aux_mpio @@ -738,8 +828,9 @@ obtener_config_map <- function(data_agrupada, dpto, mpio, } } if (!is.null(dpto)) { - stopifnot("El parametro dpto debe ser un cadena de caracteres" - = is.character(dpto)) + stopifnot( + "El parametro dpto debe ser un cadena de caracteres" = is.character(dpto) + ) data_dept <- obtener_info_depts(dpto, mpio) data_dept <- data_dept[1, ] dpto <- data_dept$nombre_departamento @@ -747,17 +838,47 @@ obtener_config_map <- function(data_agrupada, dpto, mpio, mpio <- data_dept$nombre_municipio } polygon_seleccionado <- shp[shp$DPTO_CCDGO == - data_dept$codigo_departamento, ] - polygon_seleccionado$MPIO_CCDGO <- - paste0(polygon_seleccionado$DPTO_CCDGO, - polygon_seleccionado$MPIO_CCDGO) - colnames(polygon_seleccionado)[colnames(polygon_seleccionado) == - "MPIO_CCDGO"] <- "id" - } else if (is.null(mpio)) { - colnames(polygon_seleccionado)[colnames(polygon_seleccionado) == - "DPTO_CCDGO"] <- "id" + data_dept$codigo_departamento, ] } - config_map <- list(dpto = dpto, mpio = mpio, - poligono = polygon_seleccionado) + polygon_seleccionado$MPIO_CCDGO <- + paste0( + polygon_seleccionado$DPTO_CCDGO, + polygon_seleccionado$MPIO_CCDGO + ) + colnames(polygon_seleccionado)[colnames(polygon_seleccionado) == + "MPIO_CCDGO"] <- "id" + config_map <- list( + dpto = dpto, mpio = mpio, + poligono = polygon_seleccionado + ) return(config_map) } + +#' @title Obtener la ruta del directorio donde se almacenar谩n +#' los datos del evento o enfermedad +#' @description Funci贸n que obtiene la ruta del directorio donde +#' se almacenar谩n los datos del evento o enfermedad. +#' @inheritParams import_data_event +#' @param mensaje_error Un `character` (cadena de caracteres) con +#' el mensaje de error que se debe mostrar en caso de que no se +#' encuentre la direcci贸n del directorio especificada en el +#' par谩metro`ruta_dir` o no sea posible crear o almacenar los +#' datos en el directorio de cach茅 de `sivirep`. +#' @return Un `character` (cadena de caracteres) con la ruta +#' del directorio donde se almacenar谩n los datos del evento o +#' enfermedad. +#' @keywords internal +obtener_ruta_dir <- function(ruta_dir = NULL, + mensaje_error) { + if (is.null(ruta_dir)) { + ruta_dir <- tools::R_user_dir("sivirep", which = "cache") + if (!dir.exists(ruta_dir)) { + creado <- dir.create(ruta_dir, recursive = TRUE) + if (!creado) { + stop("Por favor indique en el parametro ruta_dir la ruta donde + desea almacenar ", mensaje_error) + } + } + } + return(ruta_dir) +} diff --git a/README.md b/README.md index ccf3b763..d10b68ec 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,12 @@ que es el sistema oficial de vigilancia epidemiol贸gica de Colombia. ## Exclusi贸n de responsabilidad -El uso de esta librer铆a, as铆 como de los datos, reportes generados y otros productos derivados de la misma, se realiza bajo la responsabilidad exclusiva del usuario. Ni los autores de la librer铆a, ni la Pontificia Universidad Javeriana, ni la fuente de informaci贸n asumen responsabilidad alguna por los resultados obtenidos o el uso que se haga de dichos productos. +El uso de esta librer铆a, as铆 como de los datos, reportes generados y +otros productos derivados de la misma, se realiza bajo la +responsabilidad exclusiva del usuario. Ni los autores de la librer铆a, ni +la Pontificia Universidad Javeriana, ni la fuente de informaci贸n asumen +responsabilidad alguna por los resultados obtenidos o el uso que se haga +de dichos productos. ## Motivaci贸n @@ -148,78 +153,77 @@ lista_eventos <- list_events() knitr::kable(lista_eventos) ``` -| | enfermedad | aa | -|:----|:----------------------------------------------------------------------|:-----------------------------------------------------------------------------------------------------| -| 1 | Accidente Of铆dico | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 2 | Agresiones Por Animales Potencialmente Transmisores De Rabia | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 3 | Anomal铆as Cong茅nitas | 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 4 | Bajo Peso Al Nacer | 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 5 | C谩ncer De La Mama Y Cuello Uterino | 2016, 2017, 2018, 2019, 2020, 2021 | -| 6 | C谩ncer Infantil | 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 7 | Chagas | 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 8 | Chikunguya | 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 9 | Dengue | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 10 | Dengue Grave | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 11 | Esi - Irag (Vigilancia Centinela) | 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 12 | Eta Colectivo | 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 13 | Evento Adverso Grave Posterior A La Vacunaci贸n | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 14 | Exposici贸n A Fl煤or | 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 | -| 15 | Fiebre Amarilla | 2007, 2008, 2009, 2013, 2016, 2018 | -| 16 | Fiebre Tifoidea Y Paratifoidea | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 17 | Hepatitis A | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 18 | Hepatitis B, C Y Coinfecci贸n Hepatitis B Y Delta | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 19 | Hepatitis C | 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 20 | Hipotiroidismo Cong茅nito | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 21 | Infecci贸n Respiratoria Aguda Grave Irag Inusitada | 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 69 | Intento De Suicidio | | -| 22 | Intoxicaci贸n Por Gases | 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 23 | Intoxicaci贸n Por Medicamentos | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 24 | Intoxicaci贸n Por Metales Pesados | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 25 | Intoxicaci贸n Por Metanol | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 26 | Intoxicaci贸n Por Otras Sustancias Qu铆micas | 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 27 | Intoxicaci贸n Por Plaguicidas | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 28 | Intoxicaci贸n Por Solventes | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 29 | Intoxicaci贸n Por Sustancias Psicoactivas | 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 30 | Leishmaniasis Cut谩nea | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 31 | Leishmaniasis Mucosa | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 32 | Leishmaniasis Visceral | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 33 | Lepra | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 34 | Lesiones Por Artefactos Explosivos (P贸lvora Y Minas Antipersonal) | 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 35 | Lesiones Por P贸lvora Y Explosivos | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 | -| 36 | Leucemia Aguda Pedi谩trica Linfoide | 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 37 | Leucemia Aguda Pedi谩trica Mieloide | 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 68 | Malaria | | -| 38 | Malaria Asociada (Formas Mixtas) | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 39 | Malaria Complicada | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 40 | Malaria Falciparum | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 41 | Malaria Malarie | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 | -| 42 | Malaria Vivax | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 43 | Meningitis Meningoc贸cica | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 44 | Meningitis Por Haemophilus Influenzae | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 45 | Meningitis Por Neumococo | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 46 | Meningitis Tuberculosa | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 47 | Morbilidad Por Eda | 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 48 | Morbilidad Por Ira | 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 49 | Mortalidad Materna | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 50 | Mortalidad Perinatal Y Neonatal Tard铆a | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 51 | Mortalidad Por Dengue | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 52 | Mortalidad Por Desnutrici贸n | 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 53 | Mortalidad Por Eda 0-4 A帽os | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 54 | Mortalidad Por Ira | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 55 | Mortalidad Por Malaria | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 56 | Parotiditis | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 57 | Rubeola | 2007, 2008, 2009, 2011, 2012 | -| 58 | Sarampi贸n | 2011, 2012, 2013, 2015, 2018, 2019, 2020 | -| 59 | T茅tanos Accidental | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 60 | T茅tanos Neonatal | 2007, 2008, 2009, 2010, 2012, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 61 | Tos Ferina | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 62 | Tracoma | 2017, 2018, 2019, 2022 | -| 63 | Tuberculosis Extra Pulmonar | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 64 | Tuberculosis Farmacorresistente | 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 65 | Tuberculosis Pulmonar | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 66 | Varicela Individual | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 67 | Vigilancia En Salud P煤blica De La Violencia De G茅nero E Intrafamiliar | 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | -| 70 | Zika | | +| | enfermedad | aa | +|:----|:-------------------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------| +| 1 | Accidente Of铆dico | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 2 | Agresiones Por Animales Potencialmente Transmisores De Rabia | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 3 | Anomal铆as Cong茅nitas | 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 4 | Bajo Peso Al Nacer | 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | +| 5 | C谩ncer De La Mama Y Cuello Uterino | 2016, 2017, 2018, 2019, 2020, 2021, 2023 | +| 6 | C谩ncer Infantil | 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 7 | Chagas | 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 8 | Chikunguya | 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 9 | Dengue | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 10 | Dengue Grave | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 11 | Difteria | 2018, 2019, 2021 | +| 12 | Esi - Irag (Vigilancia Centinela) | 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 13 | Eta Colectivo | 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 14 | Evento Adverso Grave Posterior A La Vacunaci贸n | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 15 | Exposici贸n A Fl煤or | 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 | +| 16 | Fiebre Tifoidea Y Paratifoidea | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 17 | Hepatitis A | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 18 | Hepatitis B, C Y Coinfecci贸n Hepatitis B Y Delta | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 19 | Hepatitis C | 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 20 | Hipotiroidismo Cong茅nito | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 21 | Infecci贸n Respiratoria Aguda Grave Irag Inusitada | 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 22 | Intento De Suicidio | 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 68 | Intento De Suicidio | 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 23 | Intoxicaci贸n Por Gases | 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 24 | Intoxicaci贸n Por Medicamentos | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 25 | Intoxicaci贸n Por Metales Pesados | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 26 | Intoxicaci贸n Por Metanol | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 27 | Intoxicaci贸n Por Otras Sustancias Qu铆micas | 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 28 | Intoxicaci贸n Por Plaguicidas | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 29 | Intoxicaci贸n Por Solventes | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 30 | Leishmaniasis Cut谩nea | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 31 | Leishmaniasis Mucosa | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 32 | Leishmaniasis Visceral | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 33 | Lepra | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 34 | Leptospirosis | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 35 | Lesiones Por Artefactos Explosivos (P贸lvora Y Minas Antipersonal) | 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 36 | Lesiones Por P贸lvora Y Explosivos | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 | +| 37 | Leucemia Aguda Pedi谩trica Linfoide | 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 38 | Leucemia Aguda Pedi谩trica Mieloide | 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 67 | Malaria | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 39 | Malaria Asociada (Formas Mixtas) | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 40 | Malaria Complicada | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 41 | Malaria Falciparum | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 42 | Malaria Vivax | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 43 | Meningitis Meningoc贸cica | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 44 | Meningitis Por Haemophilus Influenzae | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 45 | Meningitis Por Neumococo | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 46 | Meningitis Tuberculosa | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 47 | Morbilidad Materna Extrema | 2012, 2013, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 48 | Morbilidad Por Eda | 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 49 | Morbilidad Por Ira | 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 50 | Mortalidad Materna | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 51 | Mortalidad Perinatal Y Neonatal Tard铆a | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 52 | Mortalidad Por Dengue | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 53 | Mortalidad Por Eda 0-4 A帽os | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 54 | Mortalidad Por Ira | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 55 | Mortalidad Por Malaria | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 56 | Parotiditis | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 57 | Rabia Humana | 2007, 2008, 2009, 2010, 2012, 2015, 2016, 2017, 2020 | +| 58 | Sarampi贸n | 2011, 2012, 2013, 2015, 2018, 2019, 2020 | +| 59 | S铆ndrome Inflamatorio Multisist茅mico En Ni帽os Asociado A Sars-Cov2 | 2022, 2023 | +| 60 | T茅tanos Accidental | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 61 | T茅tanos Neonatal | 2007, 2008, 2009, 2010, 2012, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | +| 62 | Tos Ferina | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 63 | Tracoma | 2017, 2018, 2019, 2022 | +| 64 | Tuberculosis Extra Pulmonar | 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 65 | Tuberculosis Farmacorresistente | 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | +| 66 | Tuberculosis Pulmonar | 2010, 2011, 2016, 2017, 2018, 2019, 2020, 2021, 2022 | +| 69 | Zika | 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | ## Reporte automatizado diff --git a/_pkgdown.yml b/_pkgdown.yml index ce5b3e8a..cc3e3095 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -8,7 +8,7 @@ lang: es reference: - title: Importacion de datos contents: - - contains("importar") + - contains("import") - contains("list_events") - title: Limpieza de datos contents: @@ -18,7 +18,9 @@ reference: - contains("remove") - contains("convert") - title: Distribuciones y agrupaciones por variable - contents: contains("agrupar") + contents: + - contains("agrupar") + - contains("filtro") - title: C谩lculo de la incidencia contents: contains("calcular") - title: Generaci贸n de gr谩ficas, mapas y tablas diff --git a/inst/WORDLIST b/inst/WORDLIST new file mode 100644 index 00000000..60ac0418 --- /dev/null +++ b/inst/WORDLIST @@ -0,0 +1,376 @@ +AAAA +Anio +Area +Authors +Automated +B +Bermeo +CMD +Center +Chagas +Chikunguya +Clasificacion +Codecov +Codigo +Coinfecci贸n +Condicion +Cookbook +DANE +DD +DIVIPOLA +Development +Eda +Epiverse +Esi +Ethnicity +Events +Excel +F +Falciparum +Farmacorresistente +From +Functions +Garc茅s +Geographic +GitHub +Haemophilus +Health +Huguett +ICBF +IDRC +ISO +Incidence +Influenzae +Informacion +Institute +International +Intial +Intrafamiliar +Irag +It +Javeriana +Jennifer +Knit +LateX +Leishmaniasis +License +M +MIT +MM +Maintainer +Malarie +Markdown +Meningoc贸cica +Mieloide +Mill谩n +NA +NULL +National +New +ORCID +Ocupacion +Of铆dico +Other +Pais +Paratifoidea +Parotiditis +Particion +Pavlich +Perinatal +Project +Proteccion +Provides +Psicoactivas +RStudio +Report +ReporteDengue +Reports +Research +Rmd +Rubeola +SIVIGILA +Secretariat +Status +Tangarife +Tapiero +Technological +Template +The +This +Tip +Tracoma +University +Useful +Vivax +Wrangling +Year +Years +Zika +Zulma +aa +across +actively +addresses +adm +align +allow +an +analysis +and +area +array +at +atipicos +automated +based +basica +being +bottom +bug +bugs +by +c +calculations +called +carried +caracteres +center +character +check +clasificacion +classification +cleaning +cod +codigo +cols +conducted +considered +constitucion +contains +contien +contributor +contributors +conviertiendolas +coverage +creacion +decision +defined +defuncion +departamenos +departments +dependendiendo +descriptive +developed +dia +digitos +disease +diseases +disposibles +distribution +distributions +divipoladata +em +enable +enfermedad +engermedad +epidemiol贸gica +epidemiol贸gicas +epidemiol贸gico +epidemiol贸gicos +est +estandar +estandarizarla +estetica +ethnicity +etn +etnica +eve +event +events +expert +f +facilitate +facilitates +features +fec +fill +five +fixes +flow +follow +follows +for +four +frame +from +functions +funder +generate +generated +generating +generation +geoespacial +geografica +geographic +geolocalizaci贸n +group +groups +gui贸n +health +holder +hos +hospitalizacion +i +identified +img +import +improvements +incidence +includes +including +indicators +ini +initial +kable +key +left +lifecycle +links +list +logic +m +major +making +margin +maturing +med +microdatos +mpio +multiple +mun +municipalities +must +m煤ltiplicaci贸n +n +named +new +nom +nomb +notificacion +now +numeric +numerico +obtaining +of +on +or +out +package +pais +parameters +p谩rrafo +per +plot +plots +poblacion +poblacionales +poligono +poligonos +preprocesar +previous +process +professionals +project +protocols +psiquiatricos +pull +par谩metro +reached +refactoring +regimen +related +release +report +reports +represent +requests +restrospective +review +reviews +rmarkdown +s +scale +sections +semanaepi +sf +significant +sintomas +socioeconomico +source +specific +stable +state +status +students +style +subindice +subnacional +tabularlos +template +templates +testing +that +the +tip +title +token +type +uni +updates +usability +usable +user +users +variety +various +vento +version +versions +via +which +width +with +wrangling +years +Antipersonal +Arag贸n +Arredondo +G贸mez +Mendez +Metanol +NaN +Vacunaci贸n +cas +comandos +dir +dpto +epidemiolog铆a +gr谩fico +migrantes +num茅rico +poblacional +poblacionales +retroalimentaci贸n +Bogot谩 +Fl贸rez +R +epidemi贸logos +faltantes +parametrizado +video +PDF +LaTeX +surveillance +system +logical +epidemiological \ No newline at end of file diff --git a/inst/extdata/config.yml b/inst/extdata/config.yml index 16e65f59..ed0f2da5 100644 --- a/inst/extdata/config.yml +++ b/inst/extdata/config.yml @@ -6,17 +6,26 @@ default: query_path_microdata: "items?$select=*,FileRef&$filter=(A_x00f1_o%20eq%20%27_year_%27)and(NombreEvento%20eq%20%27_disease_%27)" query_diseases_by_year_path: "https://portalsivigila.ins.gov.co/_api/web/lists/GetByTitle('Microdatos')/items?$select=Evento,A_x00f1_o,NombreEvento&$orderby=NombreEvento%20asc&$top=1000" data_delim: ["|", "," , ";", ":", "-"] - cols_remover: ["particion", "consecutive", "consecutive2", "separacion"] + cols_remover: ["particion", "consecutive", "consecutive2", "separacion", "consecutive_12"] geo_data_path: "https://www.datos.gov.co/api/views/gdxc-w37w/rows.csv?accessType=DOWNLOAD" data_folder: "data/" - additional_diseases: ["Malaria", "Intento De Suicidio", "Zika"] + additional_diseases: + - event: "Malaria" + start_year: 2007 + final_year: 2023 + - event: "Intento De Suicidio" + start_year: 2016 + final_year: 2023 + - event: "Zika" + start_year: 2015 + final_year: 2023 related_diseases: {"MORTALIDAD MATERNA": "MORBILIDAD MATERNA EXTREMA"} dates_column_names: ["fecha_nto", "fec_not", "ini_sin", "fec_hos", "fec_def", "fec_con"] depto_column_names: ["cod_dpto_o", "cod_dpto_r"] geo_column_names: ["cod_dpto_o", "cod_dpto_r", "cod_dpto_n", "cod_mun_o", "cod_mun_r", "cod_mun_n"] occurrence_geo_diseases: cod_dpto_n: [{ 351 : "ENDOMETRITIS PUERPERAL" }, { 357 : "INFECCION ASOCIADA A DISPOSITIVOS" }] - cod_dpto_r: [{ 110 : "BAJO PESO AL NACER" }, { 100 : "CANCER DE LA MAMA Y CUELLO UTERINO" }, { 459 : "CANCER INFANTIL" }, { 342 : "ENFERMEDADES HUERFANAS - RARAS" }, { 549 : "MORBILIDAD MATERNA EXTREMA" }, { 550 : "MORTALIDAD MATERNA" }, { 560 : "MORTALIDAD PERINATAL Y NEONATAL TARDIA" }, { 112 : "MORTALIDAD POR DESNUTRICION"}, { 450 : "LEPRA"}, { 330 : "HEPATITIS A"}, { 720 : "SINDROME DE RUBEOLA CONGENITA"}] + cod_dpto_r: [{ 110 : "BAJO PESO AL NACER" }, { 105 : "CANCER DE LA MAMA Y CUELLO UTERINO" }, { 459 : "CANCER INFANTIL" }, { 342 : "ENFERMEDADES HUERFANAS - RARAS" }, { 549 : "MORBILIDAD MATERNA EXTREMA" }, { 550 : "MORTALIDAD MATERNA" }, { 560 : "MORTALIDAD PERINATAL Y NEONATAL TARDIA" }, { 112 : "MORTALIDAD POR DESNUTRICION"}, { 450 : "LEPRA"}, { 330 : "HEPATITIS A"}, { 720 : "SINDROME DE RUBEOLA CONGENITA"}] cod_depts_exceptions: [00, 01] diseases_exceptions: [ 300: ["data_event$tip_cas != 5"], 110: ["data_event$edad <= 0" , "data_event$uni_med != 1" , "data_event$tip_cas != 5"], 459: ["data_event$tip_cas == 3 || data_event$tip_cas == 4" ], 210: ["data_event$con_fin == 2", "data_event$tip_cas == 1 || data_event$tip_cas == 5" ], 220: ["data_event$con_fin == 2", "data_event$tip_cas == 1 || data_event$tip_cas == 5" ], 230: ["data_event$tip_cas == 1" ], 250: ["data_event$tip_cas == 1 || data_event$tip_cas == 4" ], 270: ["data_event$tip_cas == 1 || data_event$tip_cas == 4" ], 290: ["data_event$tip_cas == 1 || data_event$tip_cas == 4" ], 310: ["data_event$tip_cas == 1 || data_event$tip_cas == 4" ], 420: ["data_event$tip_cas != 3" ], 430: ["data_event$tip_cas != 3" ], 440: ["data_event$tip_cas != 2 & data_event$tip_cas != 3" ], 460: ["data_event$tip_cas != 4" ], 495: ["data_event$tip_cas != 4" ], 470: ["data_event$tip_cas != 4" ], 490: ["data_event$tip_cas != 4" ], 480: ["data_event$tip_cas != 4" ], 549: ["data_event$edad < 5 & data_event$edad > 59", "data_event$tip_cas != 5", "data_event$cod_fin != 1" ], 550: ["data_event$edad < 5 & data_event$edad > 59", "data_event$tip_cas != 5", "data_event$tip_cas != 5", "data_event$cod_fin != 2" ], 560: ["data_event$tip_cas != 5", "data_event$cod_fin != 2" ], 580: ["data_event$cod_fin != 2" ], 112: ["data_event$cod_fin != 2" ], 540: ["data_event$cod_fin != 2" ], 560: ["data_event$fecha_nto >= data_event$fec_def"] ] departments: @@ -26,7 +35,7 @@ default: - 'Archipielago de San Andres, Providencia y Santa Catalina' - Catalina - Atlantico - - Bogota D.C. + - Bogota DC - Bolivar - Boyaca - Caldas @@ -59,7 +68,7 @@ default: map_shape_zip_file: "depto_adm_shp_simp.zip" map_shape_path: "https://raw.githubusercontent.com/TRACE-LAC/sivirep_resources/main/depto_adm_shp_simp.zip" dpto_shape_file: "depto.shp" - divipola_data_path: "divipoladata.rda" + divipola_data_path: "divipoladata.rds" labels_geo_areas: ["Cabecera municipal", "Centro poblado", "Rural disperso"] labels_cas_tip: '1': Sospechoso @@ -88,59 +97,59 @@ default: label_etn_groups: "Pertenencia 茅tnica" projections_population: url: >- - https://raw.githubusercontent.com/TRACE-LAC/sivirep_incidence/main/data/proyecciones/proyecciones_{year}.rda + https://raw.githubusercontent.com/TRACE-LAC/sivirep_incidence/main/data/proyecciones/proyecciones_{year}.rds file_name: 'proyecciones_{year}' - extension: .rda + extension: .rds start_year: 2005 final_year: 2035 risk_population: - cod_eve: 210 event: dengue url: >- - https://raw.githubusercontent.com/TRACE-LAC/sivirep_incidence/main/data/poblacion_riesgo/210_dengue/pob_riesgo_210_dengue_{year}.rda + https://raw.githubusercontent.com/TRACE-LAC/sivirep_incidence/main/data/poblacion_riesgo/210_dengue/pob_riesgo_210_dengue_{year}.rds years: - 2022 - 2021 - 2020 file_name: 'pob_riesgo_210_dengue_{year}' - extension: .rda + extension: .rds - cod_eve: 465 event: malaria url: >- - https://raw.githubusercontent.com/TRACE-LAC/sivirep_incidence/main/data/poblacion_riesgo/465_malaria/pob_riesgo_465_malaria_{year}.rda + https://raw.githubusercontent.com/TRACE-LAC/sivirep_incidence/main/data/poblacion_riesgo/465_malaria/pob_riesgo_465_malaria_{year}.rds years: - 2023 - 2022 - 2021 file_name: 'pob_riesgo_465_malaria_{year}' - extension: .rda + extension: .rds - cod_eve: 420 event: leishmaniasis_cutanea url: >- - https://raw.githubusercontent.com/TRACE-LAC/sivirep_incidence/main/data/poblacion_riesgo/420_leishmaniasis_cutanea/pob_riesgo_420_leishmaniasis_cutanea_{year}.rda + https://raw.githubusercontent.com/TRACE-LAC/sivirep_incidence/main/data/poblacion_riesgo/420_leishmaniasis_cutanea/pob_riesgo_420_leishmaniasis_cutanea_{year}.rds years: - 2023 file_name: 'pob_riesgo_420_leishmaniasis_cutanea_{year}' - extension: .rda + extension: .rds - cod_eve: 430 event: leishmaniasis_mucosa url: >- - https://raw.githubusercontent.com/TRACE-LAC/sivirep_incidence/main/data/poblacion_riesgo/430_leishmaniasis_mucosa/pob_riesgo_430_leishmaniasis_mucosa_{year}.rda + https://raw.githubusercontent.com/TRACE-LAC/sivirep_incidence/main/data/poblacion_riesgo/430_leishmaniasis_mucosa/pob_riesgo_430_leishmaniasis_mucosa_{year}.rds years: - 2023 file_name: 'pob_riesgo_430_leishmaniasis_mucosa_{year}' - extension: .rda + extension: .rds - cod_eve: 440 event: leishmaniasis_visceral url: >- - https://raw.githubusercontent.com/TRACE-LAC/sivirep_incidence/main/data/poblacion_riesgo/440_leishmaniasis_visceral/pob_riesgo_440_leishmaniasis_visceral_{year}.rda + https://raw.githubusercontent.com/TRACE-LAC/sivirep_incidence/main/data/poblacion_riesgo/440_leishmaniasis_visceral/pob_riesgo_440_leishmaniasis_visceral_{year}.rds years: - 2023 file_name: 'pob_riesgo_440_leishmaniasis_visceral_{year}' - extension: .rda - incidence_events_file_name: "incidencia_eventos.rda" + extension: .rds + incidence_events_file_name: "incidencia_eventos.rds" caption_geo_incidence: "Incidencia por geograf铆a de " caption_sex_incidence: "Incidencia por sexo" months: ["enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre"] special_events: [{"cod_eve": 465, "event": "malaria"}] - request_timeout: 100 + request_timeout: 1000 diff --git a/inst/extdata/dengue2020.rda b/inst/extdata/dengue2020.rda deleted file mode 100644 index c9c3a16f..00000000 Binary files a/inst/extdata/dengue2020.rda and /dev/null differ diff --git a/inst/extdata/divipoladata.rda b/inst/extdata/divipoladata.rda deleted file mode 100644 index 3c72ce88..00000000 Binary files a/inst/extdata/divipoladata.rda and /dev/null differ diff --git a/inst/extdata/divipoladata.rds b/inst/extdata/divipoladata.rds new file mode 100644 index 00000000..15ee0088 Binary files /dev/null and b/inst/extdata/divipoladata.rds differ diff --git a/inst/extdata/incidencia_eventos.rda b/inst/extdata/incidencia_eventos.rda deleted file mode 100644 index 85502b6b..00000000 Binary files a/inst/extdata/incidencia_eventos.rda and /dev/null differ diff --git a/inst/extdata/incidencia_eventos.rds b/inst/extdata/incidencia_eventos.rds new file mode 100644 index 00000000..68461a73 Binary files /dev/null and b/inst/extdata/incidencia_eventos.rds differ diff --git a/inst/rmarkdown/templates/reports/skeleton/skeleton.Rmd b/inst/rmarkdown/templates/reports/skeleton/skeleton.Rmd index f8d7066e..450649b8 100644 --- a/inst/rmarkdown/templates/reports/skeleton/skeleton.Rmd +++ b/inst/rmarkdown/templates/reports/skeleton/skeleton.Rmd @@ -1,11 +1,11 @@ --- output: - pdf_document: - number_sections: true html_document: number_sections: true fig_caption: true css: style.css + pdf_document: + number_sections: true word_document: number_sections: true header-includes: @@ -28,7 +28,7 @@ title: \textcolor{colortitle}{.} subtitle: "" params: nombre_evento: - value: "Dengue" + value: "Chagas" label: Enfermedad input: select choices: !r sivirep::list_events()$enfermedad @@ -40,7 +40,7 @@ params: input: select label: Pa铆s choices: ["Colombia"] - departmento: + departamento: value: "" label: Departamento input: select @@ -102,13 +102,13 @@ showtext::showtext_auto() ```{r titulo, include = FALSE, echo = FALSE} titulo <- paste0("Reporte Automatizado para ", stringr::str_to_title(params$nombre_evento), " ", - params$departmento, " - Colombia", + params$departamento, " - Colombia", ", ", params$year) if (params$municipio != "") { titulo <- paste0("Reporte Automatizado para ", stringr::str_to_title(params$nombre_evento), " ", params$municipio, ", ", - params$departmento, " - Colombia", + params$departamento, " - Colombia", ", ", params$year) } fuente <- "Fuente SIVIGILA, Datos libres" @@ -170,14 +170,15 @@ fuente <- "Fuente SIVIGILA, Datos libres" ```{r import-data, include = FALSE} data_event <- import_data_event(nombre_event = params$nombre_evento, - years = params$year) + years = params$year, + cache = TRUE) mostrar_sex <- stringr::str_detect(tolower(params$nombre_evento), stringr::fixed("materna")) etiqueta_geo <- "municipios" text_intro_geo <- "." -text_fig_geo <- paste0("municipio - ", params$departmento) -text_ext_geo <- params$departmento -if (params$departmento == "") { +text_fig_geo <- paste0("municipio - ", params$departamento) +text_ext_geo <- params$departamento +if (params$departamento == "") { etiqueta_geo <- "departamentos" text_fig_geo <- paste0("departamento - ", params$pais) text_ext_geo <- params$pais @@ -194,16 +195,16 @@ data_limpia <- limpiar_data_sivigila(data_event) ```{r filtrar-data, include = FALSE} data_event_filtrada <- data_limpia -if (params$departmento != "") { +if (params$departamento != "") { data_event_filtrada <- geo_filtro(data_event = data_limpia, - dpto = params$departmento) + dpto = params$departamento) text_init_geo <- paste0(", en el departamento del ", - params$departmento) + params$departamento) if (params$municipio != "") { text_init_geo <- paste0(", en el municipio del ", params$municipio) data_event_filtrada <- geo_filtro(data_event = data_event_filtrada, - dpto = params$departmento, + dpto = params$departamento, mpio = params$municipio) } text_intro_geo <- paste0(text_init_geo, @@ -230,19 +231,23 @@ total_casos_eventos <- agrupar_eventos(data_event = data_event_filtrada, plot_tabla_tipos_event(total_casos_eventos) ``` -Durante el per铆odo comprendido entre el a帽o `r (params$year - 5)` y `r params$year`, se observ贸 la siguiente distribuci贸n de casos: +Durante el per铆odo comprendido entre el a帽o `r (params$year - 4)` y `r params$year`, se observ贸 la siguiente distribuci贸n de casos: ```{r casos-years, echo = FALSE, error = FALSE, fig.height=5, fig.width = 10, warning = FALSE, include = TRUE, message = FALSE} -data_event_years <- import_data_event(nombre_event = params$nombre_evento, - years = seq(params$year - 5, - params$year)) +data_event_years <- + import_data_event(nombre_event = params$nombre_evento, + years = seq(params$year - 4, + params$year - 1), + cache = TRUE) +data_event_years <- rbind(data_event, data_event_years) data_years_limpia <- limpiar_data_sivigila(data_event_years) data_years_filtrada <- data_years_limpia -if (params$departmento != "") { +if (params$departamento != "") { data_years_filtrada <- geo_filtro(data_event = data_years_limpia, - dpto = params$departmento) + dpto = params$departamento) } casos_years <- agrupar_years(data_event = data_years_filtrada) +years_text <- length(unique(casos_years[["ano"]])) altura_fig_years <- 5 eventos <- unique(casos_years[["cod_eve"]]) if (length(eventos) > 3) { @@ -250,7 +255,7 @@ if (length(eventos) > 3) { } ``` -```{r grafica-casos-years, fig.height = altura_fig_years, fig.width = 11, fig.cap = paste0("Distribuci贸n de casos en los 煤ltimos 6 a帽os - ", text_ext_geo)} +```{r grafica-casos-years, fig.height = altura_fig_years, fig.width = 11, fig.cap = paste0("Distribuci贸n de casos en los 煤ltimos ", years_text, " a帽os - ", text_ext_geo)} plot_years(casos_years) ``` @@ -271,7 +276,7 @@ casos_tip_cas_years <- agrupar_tipo_caso(data_event = data_years_filtrada, cols_tipo = c("tip_cas", "ano")) ``` -```{r grafica-casos-tip-cas-years, fig.height = 7, fig.width = 13, fig.cap = paste0("Distribuci贸n de casos en los 煤ltimos 6 a帽os - ", text_ext_geo)} +```{r grafica-casos-tip-cas-years, fig.height = 7, fig.width = 13, fig.cap = paste0("Distribuci贸n de casos en los 煤ltimos ", years_text, " a帽os - ", text_ext_geo)} plot_tipo_caso_years(casos_tip_cas_years) ``` @@ -285,7 +290,7 @@ mes_mayor_casos <- obtener_meses_mas_casos(data_event = col_fechas = "ini_sin") ``` -`r if (params$temporal_distribution) {paste0("Los casos se distribuyen a lo largo de los meses de enero a diciembre de ", params$year, " teniendo un mayor reporte en el mes de ", mes_mayor_casos, " por fecha de inicio de s铆ntomas (Ver Figura 4).")}` +`r if (params$temporal_distribution) {paste0("Los casos se distribuyen a lo largo de los meses de enero a diciembre de ", params$year, " teniendo mayor n煤mero en el mes de ", mes_mayor_casos, " por fecha de inicio de s铆ntomas (Ver Figura 4).")}` \newpage @@ -303,7 +308,7 @@ vals_sex <- obtener_text_sex(casos_sex, params$year, 4) `r if (params$epi_sex_distribution && !mostrar_sex) {vals_sex$text}` -```{r grafica-casos-sex, fig.height = 4.8, fig.width = 8.4, fig.cap = paste0("Distribuci贸n de casos por sexo - ", text_ext_geo), include = params$epi_sex_distribution} +```{r grafica-casos-sex, fig.height = 5.5, fig.width = 9.5, fig.cap = paste0("Distribuci贸n de casos por sexo - ", text_ext_geo), include = params$epi_sex_distribution} plot_sex(data_agrupada = casos_sex) ``` @@ -313,7 +318,7 @@ casos_sex_semanaepi <- agrupar_sex_semanaepi(data_event = data_event_filtrada) \newpage -`r if (params$epi_sex_distribution) {paste0("Esta predominancia del reporte de casos del sexo ", vals_sex$mayor[1], " se mantuvo a lo largo de la mayoria de semanas epidemiol贸gicas (Ver figura 6). ")}` +`r if (params$epi_sex_distribution) {paste0("Esta predominancia de casos del sexo ", vals_sex$mayor[1], " se mantuvo a lo largo de la mayoria de semanas epidemiol贸gicas (Ver figura 6). ")}` ```{r grafica-casos-semanaepi, fig.height = 6, fig.width = 10, fig.cap = paste0("Distribuci贸n de casos por sexo y semana epidemiol贸gica - ", text_ext_geo), include = params$epi_sex_distribution, fig.pos = "H"} plot_sex_semanaepi(data_agrupada = casos_sex_semanaepi) @@ -342,49 +347,69 @@ casos_edad_sex <- agrupar_edad_sex(data_event = data_event_filtrada, plot_edad_sex(data_agrupada = casos_edad_sex) ``` -`r if(params$mpio_distribution && params$departmento != "" && params$municipio == "") {"# Distribuci贸n de casos por municipio"} else if(params$municipio == "") {"# Distribuci贸n de casos por departamento"}` +# Distribuci贸n espacial de casos + +`r if(params$mpio_distribution && params$departamento != "" && params$municipio == "") {"## Distribuci贸n de casos por municipio"} else if(params$municipio == "") {"## Distribuci贸n de casos por departamento"}` ```{r casos-geo, results='hide', echo = FALSE, error = FALSE, warning = FALSE, include = FALSE, message = FALSE} -geo_ocurrencia <- obtener_tip_ocurren_geo(nombre_event = params$nombre_evento) -if (params$departmento != "") { - dist_espacial_dpto <- agrupar_mpio(data_event = data_event_filtrada, - dpto = params$departmento) +cod_event <- unique(data_event_filtrada[["cod_eve"]])[1] +geo_ocurrencia <- obtener_tip_ocurren_geo(nombre_event = cod_event) +if (params$departamento != "") { + dist_espacial <- agrupar_mpio(data_event = data_event_filtrada, + dpto = params$departamento) col_geo <- geo_ocurrencia[4] } else { - dist_espacial_dpto <- agrupar_dpto(data_event = data_event_filtrada) + dist_espacial <- agrupar_dpto(data_event = data_event_filtrada) col_geo <- geo_ocurrencia[2] } -dist_espacial_dpto <- dist_espacial_dpto[order(dist_espacial_dpto$casos), ] +dist_espacial <- dist_espacial[order(dist_espacial$casos), ] espacial_mayor_casos <- obtener_fila_mas_casos(data_event = - dist_espacial_dpto) + dist_espacial) altura_fig_espacial <- 15 if (isTRUE(length(unique( - dist_espacial_dpto[[col_geo]])) < 15)) { + dist_espacial[[col_geo]])) < 15)) { altura_fig_espacial <- 10 } ``` -`r if(params$mpio_distribution && params$departmento != "" && params$municipio == "") {paste0("Los casos se distribuyen a lo largo de ", nrow(dist_espacial_dpto), " municipios del departamento de ", params$departmento, " teniendo un mayor reporte el municipio de ", stringr::str_to_title(espacial_mayor_casos[[col_geo]]), " con ", espacial_mayor_casos$casos, " casos (Ver Figura 9).")} else if(params$municipio == "") {paste0("Los casos se distribuyen a lo largo de ", nrow(dist_espacial_dpto), " departamentos de ", params$pais, " teniendo un mayor reporte el departamento de ", stringr::str_to_title(espacial_mayor_casos[[col_geo]]), " con ", espacial_mayor_casos$casos, " casos (Ver Figura 9).")}` +`r if(params$mpio_distribution && params$departamento != "" && params$municipio == "") {paste0("Los casos se distribuyen a lo largo de ", nrow(dist_espacial), " municipios del departamento de ", params$departamento, " teniendo un mayor reporte el municipio de ", stringr::str_to_title(espacial_mayor_casos[[col_geo]]), " con ", espacial_mayor_casos$casos, " casos (Ver Figura 9).")} else if(params$municipio == "") {paste0("Los casos se distribuyen a lo largo de ", nrow(dist_espacial), " departamentos de ", params$pais, " teniendo un mayor reporte el departamento de ", stringr::str_to_title(espacial_mayor_casos[[col_geo]]), " con ", espacial_mayor_casos$casos, " casos (Ver Figura 9).")} else {paste0("Los casos para el municio de ", params$municipio, " son: ", nrow(data_event_filtrada))}` -```{r grafica-casos-mpios, fig.height = altura_fig_espacial, fig.width = 10, fig.cap = paste0("Distribuci贸n de casos por ", text_fig_geo), include = params$mpio_distribution && params$departmento != "" && params$municipio == "", eval = params$mpio_distribution && params$departmento != ""} -plot_mpios <- plot_mpios(data_agrupada = dist_espacial_dpto) +```{r grafica-casos-mpios, fig.height = altura_fig_espacial, fig.width = 10, fig.cap = paste0("Distribuci贸n de casos por ", text_fig_geo), include = params$mpio_distribution && params$departamento != "" && params$municipio == "", eval = params$mpio_distribution && params$departamento != ""} +plot_mpios <- plot_mpios(data_agrupada = dist_espacial) plot_mpios ``` -```{r grafica-casos-dptos, fig.height = altura_fig_espacial, fig.width = 10, fig.cap = paste0("Distribuci贸n de casos por ", text_fig_geo), eval = params$departmento == "", include = params$departmento == ""} -plot_dptos <- plot_dptos(data_agrupada = dist_espacial_dpto) +```{r grafica-casos-dptos, fig.height = altura_fig_espacial, fig.width = 10, fig.cap = paste0("Distribuci贸n de casos por ", text_fig_geo), eval = params$departamento == "", include = params$departamento == ""} +plot_dptos <- plot_dptos(data_agrupada = dist_espacial) plot_dptos ``` -`r if (!knitr::is_html_output() && params$municipio == "") {paste0("\\newpage")}` +```{r plot-mapa-casos, results='hide', echo = FALSE, error = FALSE, warning = FALSE, include = FALSE, message = FALSE} +text_mapa_casos <- "por municipios" +dist_espacial_casos <- dist_espacial +if (params$departamento == "" && params$municipio == "") { + dist_espacial_casos <- agrupar_dpto(data_event_filtrada, + col_dpto = geo_ocurrencia[1:4]) +} else { + text_mapa_casos <- "" +} +mapa <- plot_map(data_agrupada = dist_espacial_casos, + col_distribucion = "casos") +``` + +```{r mapa-casos, echo = FALSE, error = FALSE, warning = FALSE, include = TRUE, message = FALSE, cache = FALSE, results = FALSE, comment = FALSE, fig.height = 18, fig.width = 16, fig.cap = paste0("Distribuci贸n espacial de casos ", text_mapa_casos , " - ", text_ext_geo), include = params$spatial_distribution} +mapa +``` + +`r if (!knitr::is_html_output()) {paste0("\\newpage")}` -`r if(params$mpio_distribution) {"# Distribuci贸n de casos por 谩rea geogr谩fica"}` +`r if(params$mpio_distribution) {"# Distribuci贸n de casos por 谩rea geogr谩fica de ocurrencia"}` ```{r casos-area, results='hide', echo = FALSE, error = FALSE, warning = FALSE, include = FALSE, message = FALSE} dist_areas_geo <- agrupar_area_geo(data_event = data_event_filtrada) ``` -```{r grafica-casos-area, fig.height = 3, fig.width = 7, fig.cap = paste0("Distribuci贸n de casos por 谩rea geogr谩fica - ", text_ext_geo), include = params$areas_distribution, fig.pos = "H"} +```{r grafica-casos-area, fig.height = 3, fig.width = 7, fig.cap = paste0("Distribuci贸n de casos por 谩rea geogr谩fica de ocurrencia - ", text_ext_geo), include = params$areas_distribution, fig.pos = "H"} plot_areas_geo <- plot_area_geo(data_agrupada = dist_areas_geo) plot_areas_geo ``` @@ -393,9 +418,9 @@ plot_areas_geo dist_top_areas_geo <- agrupar_top_area_geo(data_event = data_event_filtrada) ``` -`r if(params$municipio == "") { paste0("Los 10 ", etiqueta_geo, " que presentaron mayor n煤mero de casos por 谩rea geogr谩fica son los siguientes:") }` +`r if(params$municipio == "") { paste0("Los 10 ", etiqueta_geo, " que presentaron mayor n煤mero de casos por 谩rea geogr谩fica de ocurrencia son los siguientes:") }` -```{r grafica-casos-top-area, fig.height = 5, fig.width = 10, fig.cap = paste0("Distribuci贸n de los 10 municipios con m谩s casos por 谩rea geogr谩fica - ", text_ext_geo), include = params$areas_distribution && params$municipio == "", fig.pos = "H", eval = params$areas_distribution && params$municipio == ""} +```{r grafica-casos-top-area, fig.height = 5, fig.width = 10, fig.cap = paste0("Distribuci贸n de los 10 ", etiqueta_geo, " con m谩s casos por 谩rea geogr谩fica de ocurrencia - ", text_ext_geo), include = params$areas_distribution && params$municipio == "", fig.pos = "H", eval = params$areas_distribution && params$municipio == ""} plot_top_areas_geo <- plot_top_area_geo(data_agrupada = dist_top_areas_geo) plot_top_areas_geo ``` @@ -412,70 +437,105 @@ plot_per_etn(data_agrupada = casos_per_etn) # Incidencia ```{r incidencia-total, results='hide', echo = FALSE, error = FALSE, warning = FALSE, include = FALSE, message = FALSE} -incidencia_dpto <- calcular_incidencia(data_agrupada = - dist_espacial_dpto) +incidencia_total <- calcular_incidencia(data_agrupada = + dist_espacial, + cache = TRUE) cond_incidencia <- - obtener_cond_inciden_event(cod_eve = dist_espacial_dpto$cod_eve[1]) + obtener_cond_inciden_event(cod_eve = dist_espacial$cod_eve[1]) ``` -`r if(params$mpio_distribution && params$departmento != "" && params$municipio == "") {paste0("La incidencia para el departamento de ", params$departmento, " es ", incidencia_dpto, " por ", cond_incidencia$coeficiente, " habitantes.")} else if (params$departmento == "") {paste0("La incidencia para ", params$pais, " es ", incidencia_dpto, " por ", cond_incidencia$coeficiente, " habitantes.")} else {paste0("La incidencia para el municipio ", params$municipio, " es ", incidencia_dpto, " por ", cond_incidencia$coeficiente, " habitantes.")}` +```{r text-pop-incidencia-total} +text_incidencia_total <- "la poblaci贸n a riesgo" +if (incidencia_total$poblacion == "proyecciones") { + text_incidencia_total <- "las proyecciones poblacionales DANE" +} +``` -## Incidencia por sexo +`r if(params$mpio_distribution && params$departamento != "" && params$municipio == "") {paste0("La incidencia para el departamento de ", params$departamento, " es ", incidencia_total$incidencia, " por ", cond_incidencia$coeficiente, " habitantes. Fue calculada con ", text_incidencia_total, ".")} else if (params$departamento == "") {paste0("La incidencia para ", params$pais, " es ", incidencia_total$incidencia, " por ", cond_incidencia$coeficiente, " habitantes. Fue calculada con ", text_incidencia_total, ".")} else {paste0("La incidencia para el municipio ", params$municipio, " es ", incidencia_total$incidencia, " por ", cond_incidencia$coeficiente, " habitantes. Fue calculada con ", text_incidencia_total, ".")}` -La incidencia para cada sexo por `r cond_incidencia$coeficiente` habitantes, se puede visualizar en la tabla 2 y figura 13. +## Incidencia por sexo ```{r incidencia-sex, results='hide', echo = FALSE, error = FALSE, warning = FALSE, include = FALSE, message = FALSE} nomb_dpto <- NULL -if (params$departmento != "") { - nomb_dpto <- params$departmento +if (params$departamento != "") { + nomb_dpto <- params$departamento } incidencias_sex <- calcular_incidencia_sex(data_agrupada = casos_sex, - dpto = nomb_dpto) + dpto = nomb_dpto, + cache = TRUE) incidencia_mayor_sex <- obtener_fila_mas_casos(data_event = - incidencias_sex, + incidencias_sex$data_incidencia, nomb_col = "incidencia ") ``` +```{r text-pop-incidencia-sex} +text_incidencia_sex <- "la poblaci贸n a riesgo" +if (incidencias_sex$poblacion == "proyecciones") { + text_incidencia_sex <- "las proyecciones poblacionales DANE" +} +``` + +La incidencia fue calculada con `r text_incidencia_sex` para cada sexo por `r cond_incidencia$coeficiente` habitantes, se puede visualizar en la tabla 2 y figura 14. + ```{r tabla-incidencia-sex, echo = FALSE, error = FALSE, fig.height=5, fig.width = 10, warning = FALSE, include = TRUE, message = FALSE, fig.pos = "H"} -plot_tabla_incidencia_sex(incidencias_sex) +plot_tabla_incidencia_sex(incidencias_sex$data_incidencia) ``` ```{r grafica-incidencia-sex, fig.height = 3, fig.width = 7, fig.cap = paste0("Incidencia por sexo - ", text_ext_geo), include = params$epi_sex_distribution} -plot_sex(data_agrupada = incidencias_sex, +plot_sex(data_agrupada = incidencias_sex$data_incidencia, col_distribucion = "incidencia", porcentaje = FALSE) ``` +```{r incidencia-geo, results='hide', echo = FALSE, error = FALSE, warning = FALSE, include = FALSE, message = FALSE} +incidencias_geo <- + calcular_incidencia_geo(data_agrupada = + dist_espacial) +``` + +```{r text-pop-incidencia-geo} +text_incidencia_geo <- "la poblaci贸n a riesgo" +if (incidencias_geo$poblacion == "proyecciones") { + text_incidencia_geo <- "las proyecciones poblacionales DANE" +} +``` + + \newpage `r if(params$spatial_distribution) {"# Incidencia seg煤n distribuci贸n geogr谩fica"}` -`r if(params$spatial_distribution && params$departmento != "" && params$municipio == "") {paste0("La incidencia para cada uno de los municipios del departamento del ", params$departmento, " por ", cond_incidencia$coeficiente, " habitantes es la siguiente:")} else if(params$municipio == "") {paste0("La incidencia para cada uno de los departamentos de ", params$pais, " por ", cond_incidencia$coeficiente, " habitantes es la siguiente:")} else {paste0("La incidencia para el municipio de ", params$municipio, " por ", cond_incidencia$coeficiente, " habitantes es la siguiente:")}` - -```{r incidencia-geo, results='hide', echo = FALSE, error = FALSE, warning = FALSE, include = FALSE, message = FALSE} -dist_espacial_dpto <- - calcular_incidencia_geo(data_agrupada = - dist_espacial_dpto) -``` +`r if(params$spatial_distribution && params$departamento != "" && params$municipio == "") {paste0("La incidencia fue calculada con ", text_incidencia_geo, " para cada uno de los municipios del departamento del ", params$departamento, " por ", cond_incidencia$coeficiente, " habitantes es la siguiente:")} else if(params$municipio == "") {paste0("La incidencia fue calculada con ", text_incidencia_geo, " para cada uno de los departamentos de ", params$pais, " por ", cond_incidencia$coeficiente, " habitantes es la siguiente:")} else {paste0("La incidencia para el municipio de ", params$municipio, " por ", cond_incidencia$coeficiente, " habitantes es la siguiente:")}` ```{r tabla-incidencia-geo, echo = FALSE, error = FALSE, fig.height=5, fig.width = 10, warning = FALSE, include = TRUE, message = FALSE, fig.pos = "H"} -plot_tabla_incidencia_geo(dist_espacial_dpto) +plot_tabla_incidencia_geo(incidencias_geo$data_incidencia) ``` -```{r mapa-casos, results='hide', echo = FALSE, error = FALSE, warning = FALSE, include = FALSE, message = FALSE} -mapa <- plot_map(data_agrupada = dist_espacial_dpto) +```{r plot-mapa-incidencias, results='hide', echo = FALSE, error = FALSE, warning = FALSE, include = FALSE, message = FALSE} +text_mapa_inciden <- "por municipio" +if (params$departamento == "" && params$municipio == "") { + dist_espacial_mpios <- agrupar_dpto(data_event_filtrada, + col_dpto = geo_ocurrencia[1:4]) + incidencias_geo <- + calcular_incidencia_geo(data_agrupada = + dist_espacial_mpios) +} +if (params$municipio != "") { + text_mapa_inciden <- "" +} +mapa <- plot_map(data_agrupada = incidencias_geo$data_incidencia) ``` -```{r mapa, echo = FALSE, error = FALSE, warning = FALSE, include = TRUE, message = FALSE, cache = FALSE, results = FALSE, comment = FALSE, fig.height = 18, fig.width = 16, fig.cap = paste0("Incidencia seg煤n distribuci贸n geogr谩fica - ", text_ext_geo), include = params$spatial_distribution} +```{r mapa-incidencias, echo = FALSE, error = FALSE, warning = FALSE, include = TRUE, message = FALSE, cache = FALSE, results = FALSE, comment = FALSE, fig.height = 18, fig.width = 16, fig.cap = paste0("Incidencia seg煤n distribuci贸n geogr谩fica ", text_mapa_inciden, " - ", text_ext_geo), include = params$spatial_distribution} mapa ``` ```{r conclusiones, echo = FALSE, error = FALSE, warning = FALSE, include = FALSE, message = FALSE, cache = FALSE, results = FALSE, comment = FALSE} text_geo <- params$pais -if (params$spatial_distribution && params$departmento != "" +if (params$spatial_distribution && params$departamento != "" && params$municipio == "") { - text_geo <- paste0("el departamento de ", params$departmento) + text_geo <- paste0("el departamento de ", params$departamento) } else if (params$municipio != "") { text_geo <- paste0("el municipio de ", params$municipio) } @@ -490,8 +550,8 @@ text_casos_totales <- paste0("* Los casos totales reportados de ", # Conclusiones * Los casos totales reportados de `r stringr::str_to_title(params$nombre_evento)` en Colombia en el a帽o `r params$year` fueron `r nrow(data_event)`. -`r if(params$spatial_distribution && params$departmento != "") text_casos_totales` +`r if(params$spatial_distribution && params$departamento != "") text_casos_totales` * El mes de `r mes_mayor_casos` tuvo el mayor reporte. * El reporte de casos de `r stringr::str_to_title(params$nombre_evento)` a lo largo de `r params$year` predomin贸 en la poblaci贸n de `r age_most_cases$edad` a帽os. * El reporte de casos de `r stringr::str_to_title(params$nombre_evento)` predomin贸 a lo largo del a帽o en el sexo `r vals_sex$mayor[1]`. -* La incidencia para `r text_geo` es de `r incidencia_dpto` por `r cond_incidencia$coeficiente` habitantes. +* La incidencia para `r text_geo` en el a帽o `r params$year` es de `r incidencia_total$incidencia` por `r cond_incidencia$coeficiente` habitantes. diff --git a/man/agrupar_area_geo.Rd b/man/agrupar_area_geo.Rd index a2c2855e..47dad823 100644 --- a/man/agrupar_area_geo.Rd +++ b/man/agrupar_area_geo.Rd @@ -14,7 +14,7 @@ enfermedad o evento.} la columna que contiene las 谩reas geogr谩ficas en los datos de la enfermedad o evento; su valor por defecto es `"area"`.} -\item{porcentaje}{Un `boolean` (TRUE o FALSE) que indica si se debe +\item{porcentaje}{Un `logical` (TRUE o FALSE) que indica si se debe agregar una columna con el porcentaje de casos; su valor por defecto es `FALSE`.} } @@ -29,7 +29,9 @@ Funci贸n que agrupa los datos de una enfermedad o evento por \examples{ data(dengue2020) data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -agrupar_area_geo(data_event = data_limpia, - col_area = "area", - porcentaje = FALSE) +agrupar_area_geo( + data_event = data_limpia, + col_area = "area", + porcentaje = FALSE +) } diff --git a/man/agrupar_cols_casos.Rd b/man/agrupar_cols_casos.Rd index 4b513681..31262a2b 100644 --- a/man/agrupar_cols_casos.Rd +++ b/man/agrupar_cols_casos.Rd @@ -14,18 +14,18 @@ una enfermedad o evento.} `array (arreglo) de character` que contiene el nombre de la(s) columna(s) en los datos de la enfermedad o evento.} -\item{porcentaje}{Un `boolean` (TRUE o FALSE) que indica +\item{porcentaje}{Un `logical` (TRUE o FALSE) que indica si se debe agregar una columna con el porcentaje de casos; su valor por defecto es `FALSE`.} -\item{estandar}{Un `boolean` (TRUE o FALSE) que indica -si se debe utilizar el estandar de agrupaci贸n de los datos -del evento o enfermedad propuesto por el paquete, es decir +\item{estandar}{Un `logical` (TRUE o FALSE) que indica +si se debe utilizar el est谩ndar de agrupaci贸n de los datos +del evento o enfermedad propuesto por el paquete, es decir, que se incluyan estas columnas o variables como parte del resultado `c("cod_eve", "nombre_evento", "ano")`; su valor -por defecto es `TRUE`, si su valor es `FALSE` agrupara los +por defecto es `TRUE`, si su valor es `FALSE` agrupar谩 los datos solamente por las columnas o variables enviadas en el -p谩rametro `nomb_cols`.} +par谩metro `nomb_cols`.} } \value{ Un `data.frame` con los datos de una enfermedad @@ -39,9 +39,13 @@ por nombre de columna(s) y n煤mero de casos. \examples{ data(dengue2020) data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -agrupar_cols_casos(data_event = data_limpia, - nomb_cols = "sexo", - porcentaje = TRUE) -agrupar_cols_casos(data_event = data_limpia, - nomb_cols = c("sexo", "semana")) +agrupar_cols_casos( + data_event = data_limpia, + nomb_cols = "sexo", + porcentaje = TRUE +) +agrupar_cols_casos( + data_event = data_limpia, + nomb_cols = c("sexo", "semana") +) } diff --git a/man/agrupar_dpto.Rd b/man/agrupar_dpto.Rd index 549e0306..1a34117b 100644 --- a/man/agrupar_dpto.Rd +++ b/man/agrupar_dpto.Rd @@ -14,7 +14,7 @@ enfermedad o evento.} de la columna que contiene los c贸digos de los departamentos en los datos de la enfermedad o evento; su valor por defecto es `"cod_dpto_o"`.} -\item{porcentaje}{Un `boolean` (TRUE o FALSE) que indica si se debe +\item{porcentaje}{Un `logical` (TRUE o FALSE) que indica si se debe agregar una columna con el porcentaje de casos; su valor por defecto es `FALSE`.} } @@ -29,7 +29,9 @@ n煤mero de casos. \examples{ data(dengue2020) data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -agrupar_dpto(data_event = data_limpia, - col_dpto = "cod_dpto_o", - porcentaje = FALSE) +agrupar_dpto( + data_event = data_limpia, + col_dpto = "cod_dpto_o", + porcentaje = FALSE +) } diff --git a/man/agrupar_edad.Rd b/man/agrupar_edad.Rd index a63170c0..e76780a0 100644 --- a/man/agrupar_edad.Rd +++ b/man/agrupar_edad.Rd @@ -22,7 +22,7 @@ evento; su valor por defecto es `"edad"`.} \item{interval_edad}{Un `numeric` (num茅rico) que contiene el intervalo del rango de edades; su valor por defecto es `10`.} -\item{porcentaje}{Un `boolean` (TRUE o FALSE) que indica si se debe +\item{porcentaje}{Un `logical` (TRUE o FALSE) que indica si se debe agregar una columna con el porcentaje de casos; su valor por defecto es `FALSE`.} } @@ -37,7 +37,9 @@ edad y n煤mero de casos. \examples{ data(dengue2020) data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -agrupar_edad(data_event = data_limpia, - col_edad = "edad", - porcentaje = FALSE) +agrupar_edad( + data_event = data_limpia, + col_edad = "edad", + porcentaje = FALSE +) } diff --git a/man/agrupar_edad_sex.Rd b/man/agrupar_edad_sex.Rd index d250dcdc..fdcce71d 100644 --- a/man/agrupar_edad_sex.Rd +++ b/man/agrupar_edad_sex.Rd @@ -18,13 +18,13 @@ o evento.} \item{col_edad}{Un `character` (cadena de caracteres) con el nombre de la columna que contiene las edades en los datos de la enfermedad o evento; -su valor por defecto es `"edad`.} +su valor por defecto es `"edad"`.} \item{col_sex}{Un `character` (cadena de caracteres) con el nombre de la columna que contiene el sexo en los datos de la enfermedad o evento; su valor por defecto es `"sexo`.} -\item{porcentaje}{Un `boolean` (TRUE o FALSE) que indica si se debe +\item{porcentaje}{Un `logical` (TRUE o FALSE) que indica si se debe agregar una columna con el porcentaje de casos; su valor por defecto es `TRUE`.} @@ -42,8 +42,10 @@ edades, sexo y n煤mero de casos. \examples{ data(dengue2020) data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -agrupar_edad_sex(data_event = data_limpia, - col_edad = "edad", - col_sex = "sexo", - porcentaje = TRUE) +agrupar_edad_sex( + data_event = data_limpia, + col_edad = "edad", + col_sex = "sexo", + porcentaje = TRUE +) } diff --git a/man/agrupar_eventos.Rd b/man/agrupar_eventos.Rd index ff920baf..8c4dd79f 100644 --- a/man/agrupar_eventos.Rd +++ b/man/agrupar_eventos.Rd @@ -16,7 +16,7 @@ en los datos; su valor por defecto es `"cod_eve"`.} } \value{ Un `data.frame` con los datos de la enfermedad o evento agrupados -por sus tipos. +por tipo. } \description{ Funci贸n que agrupa los casos por tipo de enfermedad o evento. @@ -24,6 +24,8 @@ Funci贸n que agrupa los casos por tipo de enfermedad o evento. \examples{ data(dengue2020) data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -agrupar_eventos(data_event = data_limpia, - col_event = "cod_eve") +agrupar_eventos( + data_event = data_limpia, + col_event = "cod_eve" +) } diff --git a/man/agrupar_fecha_inisintomas.Rd b/man/agrupar_fecha_inisintomas.Rd index 3cdac773..708977ee 100644 --- a/man/agrupar_fecha_inisintomas.Rd +++ b/man/agrupar_fecha_inisintomas.Rd @@ -25,6 +25,8 @@ fecha de inicio de s铆ntomas y n煤mero de casos. \examples{ data(dengue2020) data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -agrupar_fecha_inisintomas(data_event = data_limpia, - col_fecha = "ini_sin") +agrupar_fecha_inisintomas( + data_event = data_limpia, + col_fecha = "ini_sin" +) } diff --git a/man/agrupar_mpio.Rd b/man/agrupar_mpio.Rd index 544a377e..e50f731c 100644 --- a/man/agrupar_mpio.Rd +++ b/man/agrupar_mpio.Rd @@ -22,7 +22,7 @@ que contiene el nombre del departamento; su valor por defecto es `NULL`.} la columna que contiene los c贸digos de los municipios en los datos de la enfermedad o evento; su valor por defecto es `"cod_mun_o"`.} -\item{porcentaje}{Un `boolean` (TRUE o FALSE) que indica si se debe +\item{porcentaje}{Un `logical` (TRUE o FALSE) que indica si se debe agregar una columna con el porcentaje de casos; su valor por defecto es `FALSE`.} } @@ -37,16 +37,22 @@ c贸digo de municipios y n煤mero de casos. \examples{ data(dengue2020) data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -agrupar_mpio(data_event = data_limpia, - dpto = "ANTIOQUIA", - col_mpio = "cod_mun_o", - porcentaje = FALSE) -agrupar_mpio(data_event = data_limpia, - dpto = "05", - col_mpio = "cod_mun_o", - porcentaje = FALSE) -agrupar_mpio(data_event = data_limpia, - dpto = 05, - col_mpio = "cod_mun_o", - porcentaje = TRUE) +agrupar_mpio( + data_event = data_limpia, + dpto = "ANTIOQUIA", + col_mpio = "cod_mun_o", + porcentaje = FALSE +) +agrupar_mpio( + data_event = data_limpia, + dpto = "05", + col_mpio = "cod_mun_o", + porcentaje = FALSE +) +agrupar_mpio( + data_event = data_limpia, + dpto = 05, + col_mpio = "cod_mun_o", + porcentaje = TRUE +) } diff --git a/man/agrupar_per_etn.Rd b/man/agrupar_per_etn.Rd index 78dca0e9..1546c5dd 100644 --- a/man/agrupar_per_etn.Rd +++ b/man/agrupar_per_etn.Rd @@ -10,11 +10,12 @@ agrupar_per_etn(data_event, cols_etn = "per_etn", porcentaje = TRUE) \item{data_event}{Un `data.frame` que contiene los datos de la enfermedad o evento.} -\item{cols_etn}{Un `character` (cadena de caracteres) con el nombre de -las columna(s) que contiene(n) la pertenencia 茅tnica en los datos de la -enfermedad o evento; su valor por defecto es `"per_etn"`} +\item{cols_etn}{Un `character` (cadena de caracteres) o un `array` de +`character` con el nombre de la(s) columna(s) que contiene(n) la +pertenencia 茅tnica en los datos de la enfermedad o evento; +su valor por defecto es `"per_etn"`} -\item{porcentaje}{Un `boolean` (TRUE o FALSE) que indica. +\item{porcentaje}{Un `logical` (TRUE o FALSE) que indica si se debe agregar una columna con el porcentaje de casos; su valor por defecto es `TRUE`.} } @@ -23,11 +24,13 @@ Un `data.frame` con los datos de la enfermedad o evento agrupados por la pertenencia 茅tnica. } \description{ -Funci贸n que agrupa los casos por la pertenencia 茅tnica +Funci贸n que agrupa los casos por la pertenencia 茅tnica. } \examples{ data(dengue2020) data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -agrupar_per_etn(data_event = data_limpia, - cols_etn = "per_etn") +agrupar_per_etn( + data_event = data_limpia, + cols_etn = "per_etn" +) } diff --git a/man/agrupar_rango_edad.Rd b/man/agrupar_rango_edad.Rd index 7bdc5d80..03416674 100644 --- a/man/agrupar_rango_edad.Rd +++ b/man/agrupar_rango_edad.Rd @@ -6,7 +6,7 @@ \usage{ agrupar_rango_edad( data_event, - col_edad, + col_edad = "edad", col_adicional = NULL, min_val, max_val, @@ -36,7 +36,7 @@ con la que debe finalizar el rango de edades.} \item{paso}{Un `numeric` (num茅rico) que contiene el valor del paso para generar el rango de edades.} -\item{porcentaje}{Un `boolean` (TRUE o FALSE) que indica si se debe +\item{porcentaje}{Un `logical` (TRUE o FALSE) que indica si se debe agregar una columna con el porcentaje de casos; su valor por defecto es `TRUE`.} } @@ -51,13 +51,17 @@ rango de edad y n煤mero de casos. \examples{ data(dengue2020) data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -data_edad <- agrupar_cols_casos(data_event = data_limpia, - c("edad", "semana"), - porcentaje = TRUE) -agrupar_rango_edad(data_event = data_edad, - col_edad = "edad", - min_val = 0, - max_val = max(data_edad$edad), - paso = 10, - porcentaje = TRUE) +data_edad <- agrupar_cols_casos( + data_event = data_limpia, + c("edad", "semana"), + porcentaje = TRUE +) +agrupar_rango_edad( + data_event = data_edad, + col_edad = "edad", + min_val = 0, + max_val = max(data_edad$edad, na.rm = TRUE), + paso = 10, + porcentaje = TRUE +) } diff --git a/man/agrupar_semanaepi.Rd b/man/agrupar_semanaepi.Rd index 2e4a5d3a..abc578cc 100644 --- a/man/agrupar_semanaepi.Rd +++ b/man/agrupar_semanaepi.Rd @@ -26,6 +26,8 @@ por semana epidemiol贸gica y n煤mero de casos. \examples{ data(dengue2020) data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -agrupar_semanaepi(data_event = data_limpia, - col_semanaepi = "semana") +agrupar_semanaepi( + data_event = data_limpia, + col_semanaepi = "semana" +) } diff --git a/man/agrupar_sex.Rd b/man/agrupar_sex.Rd index 10145594..3a568e82 100644 --- a/man/agrupar_sex.Rd +++ b/man/agrupar_sex.Rd @@ -14,12 +14,12 @@ o evento.} de la columna que contiene el sexo en los datos de la enfermedad o evento; su valor por defecto es `"sexo"`.} -\item{porcentaje}{Un `boolean` (TRUE o FALSE) que indica si se debe +\item{porcentaje}{Un `logical` (TRUE o FALSE) que indica si se debe agregar una columna con el porcentaje de casos; su valor por defecto es `TRUE`.} } \value{ -Un data.frame con los datos de la enfermedad o evento +Un `data.frame` con los datos de la enfermedad o evento agrupados por sexo y n煤mero de casos. } \description{ @@ -29,7 +29,9 @@ por sexo y n煤mero de casos. \examples{ data(dengue2020) data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -agrupar_sex(data_event = data_limpia, - col_sex = "sexo", - porcentaje = TRUE) +agrupar_sex( + data_event = data_limpia, + col_sex = "sexo", + porcentaje = TRUE +) } diff --git a/man/agrupar_sex_semanaepi.Rd b/man/agrupar_sex_semanaepi.Rd index a614a70b..c7b40ff6 100644 --- a/man/agrupar_sex_semanaepi.Rd +++ b/man/agrupar_sex_semanaepi.Rd @@ -15,11 +15,11 @@ agrupar_sex_semanaepi( la enfermedad o evento.} \item{cols_sex}{Un `character` (cadena de caracteres) o -`array (arreglo) de character` con el nombre de la(s) +`array` (arreglo) de `character` con el nombre de la(s) columna(s) que contienen el sexo y las semanas epidemiol贸gicas; su valor por defecto es `c("sexo", "semana")`.} -\item{porcentaje}{Un `boolean` (TRUE o FALSE) que indica si se debe +\item{porcentaje}{Un `logical` (TRUE o FALSE) que indica si se debe agregar una columna con el porcentaje de casos; su valor por defecto es `TRUE`.} } @@ -29,12 +29,14 @@ agrupados por sexo, semana epidemiol贸gica y n煤mero de casos. } \description{ Funci贸n que agrupa los datos de enfermedades por sexo, -semana, epidemiol贸gica y n煤mero de casos. +semana epidemiol贸gica y n煤mero de casos. } \examples{ data(dengue2020) data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -agrupar_sex_semanaepi(data_event = data_limpia, - cols_sex = c("sexo", "semana"), - porcentaje = TRUE) +agrupar_sex_semanaepi( + data_event = data_limpia, + cols_sex = c("sexo", "semana"), + porcentaje = TRUE +) } diff --git a/man/agrupar_tipo_caso.Rd b/man/agrupar_tipo_caso.Rd index 30d891ae..2047387b 100644 --- a/man/agrupar_tipo_caso.Rd +++ b/man/agrupar_tipo_caso.Rd @@ -10,9 +10,10 @@ agrupar_tipo_caso(data_event, cols_tipo = "tip_cas") \item{data_event}{Un `data.frame` que contiene los datos de la enfermedad o evento.} -\item{cols_tipo}{Un `character` (cadena de caracteres) con el nombre de -las columna(s) que contiene la clasificaci贸n inicial del caso en los datos -de la enfermedad o evento; su valor por defecto es `"tip_cas"`.} +\item{cols_tipo}{Un `character` (cadena de caracteres) o `array` (arreglo) +de `character` con el nombre de las columna(s) que contiene la clasificaci贸n +inicial del caso en los datos de la enfermedad o evento; su valor por +defecto es `"tip_cas"`.} } \value{ Un `data.frame` con los datos de la enfermedad o evento agrupados @@ -25,6 +26,8 @@ del caso. \examples{ data(dengue2020) data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -agrupar_tipo_caso(data_event = data_limpia, - cols_tipo = "tip_cas") +agrupar_tipo_caso( + data_event = data_limpia, + cols_tipo = "tip_cas" +) } diff --git a/man/agrupar_top_area_geo.Rd b/man/agrupar_top_area_geo.Rd index ed21b37d..82f09ed2 100644 --- a/man/agrupar_top_area_geo.Rd +++ b/man/agrupar_top_area_geo.Rd @@ -17,28 +17,28 @@ agrupar_top_area_geo( enfermedad o evento.} \item{dpto}{Un `character` (cadena de caracteres) que contiene -el nombre del departamento; su valor por defecto es `NULL`; si se ingresa +el nombre del departamento; su valor por defecto es `NULL`. Si se ingresa un valor en este par谩metro se proceder谩 agrupar los datos por los -municipios del departamento y sus 谩reas geogr谩ficas; si no se +municipios del departamento y sus 谩reas geogr谩ficas. Si no se ingresa un valor en este par谩metro validar谩 si los datos ya est谩n -filtrados por alg煤n departamento, si no lo est谩n generar谩 la agrupaci贸n +filtrados por alg煤n departamento; si no lo est谩n generar谩 la agrupaci贸n por departamento.} \item{col_area}{Un `character` (cadena de caracteres) con el nombre de la columna que contiene las 谩reas geogr谩ficas en los datos de la enfermedad o evento; su valor por defecto es `"cod_mun_o"`.} -\item{porcentaje}{Un `boolean` (TRUE o FALSE) que indica si se debe +\item{porcentaje}{Un `logical` (TRUE o FALSE) que indica si se debe agregar una columna con el porcentaje de casos; su valor por defecto es `FALSE`.} -\item{top}{Un `numeric` (numerico) que indica la cantidad de departamentos o +\item{top}{Un `numeric` (num茅rico) que indica la cantidad de departamentos o municipios con mayor n煤mero de casos que se deben retornar; su valor por defecto es `10`.} } \value{ -Un `data.frame` con los datos de la enfermedad o evento agrupados -por c贸digos de municipios y n煤mero de casos. +Un `data.frame` con el top 10 de los datos de la enfermedad o evento +agrupados por 谩reas geogr谩ficas y n煤mero de casos. } \description{ Funci贸n que agrupa los datos de una enfermedad o evento por @@ -47,9 +47,11 @@ Funci贸n que agrupa los datos de una enfermedad o evento por \examples{ data(dengue2020) data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -agrupar_top_area_geo(data_event = data_limpia, - dpto = "Antioquia", - col_area = "area", - porcentaje = FALSE, - top = 10) +agrupar_top_area_geo( + data_event = data_limpia, + dpto = "Antioquia", + col_area = "area", + porcentaje = FALSE, + top = 10 +) } diff --git a/man/agrupar_years.Rd b/man/agrupar_years.Rd index 0ca289fd..c84d8bd0 100644 --- a/man/agrupar_years.Rd +++ b/man/agrupar_years.Rd @@ -2,7 +2,7 @@ % Please edit documentation in R/checking_data.R \name{agrupar_years} \alias{agrupar_years} -\title{Agrupar por los a帽os de una enfermedad o evento} +\title{Agrupar por a帽os de una enfermedad o evento} \usage{ agrupar_years(data_event, col_year = "ano") } @@ -16,7 +16,7 @@ su valor por defecto es `"ano"`.} } \value{ Un `data.frame` con los datos de la enfermedad o evento agrupados -por sus a帽os. +por a帽o. } \description{ Funci贸n que agrupa los casos por los a帽os de una enfermedad @@ -25,6 +25,8 @@ o evento. \examples{ data(dengue2020) data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -agrupar_years(data_event = data_limpia, - col_year = "ano") +agrupar_years( + data_event = data_limpia, + col_year = "ano" +) } diff --git a/man/calcular_incidencia.Rd b/man/calcular_incidencia.Rd index dd39a2eb..26b0543c 100644 --- a/man/calcular_incidencia.Rd +++ b/man/calcular_incidencia.Rd @@ -6,6 +6,7 @@ \usage{ calcular_incidencia( data_incidencia = NULL, + cache = FALSE, data_agrupada, poblacion = NULL, year = NULL, @@ -16,21 +17,25 @@ calcular_incidencia( } \arguments{ \item{data_incidencia}{Un `data.frame` que contiene la poblaci贸n a riesgo o -las proyecciones poblaciones DANE. Si este par谩metro est谩 vac铆o importar谩 -la poblaci贸n a riesgo o las proyecciones dependiendo de la disponibilidad de +las proyecciones poblaciones DANE. Si este par谩metro est谩 vac铆o, se importar谩 +la poblaci贸n a riesgo o las proyecciones, dependiendo de la disponibilidad de la informaci贸n; su valor por defecto es `NULL`.} +\item{cache}{Un `logical` (`TRUE` o `FALSE`) que indica si la poblaci贸n a +riesgo o las proyecciones poblacionales DANE descargadas deben ser +almacenados en cach茅. Su valor por defecto es `FALSE`.} + \item{data_agrupada}{Un `data.frame` que contiene los datos de la enfermedad agrupados por departamento o municipio y n煤mero de casos.} \item{poblacion}{Un `character` (cadena de caracteres) con el tipo de -poblaci贸n para efectuar el calculo de la incidencia. Indica si se -va a utilizar la poblaci贸n a riesgo del evento `"riesgo"` o las -proyecciones poblacionales DANE `"proyecciones"`; su valor por defecto -es `NULL`.} +poblaci贸n para calcular la incidencia. Puede ser `"riesgo"` para la poblaci贸n +a riesgo o `"proyecciones"` para las proyecciones poblacionales DANE; +su valor por defecto es `NULL`.} -\item{year}{Un `numeric` (numerico) con el a帽o que se debe tomar de las -proyecciones poblacionales; su valor por defecto es `NULL`.} +\item{year}{Un `numeric` (num茅rico) con el a帽o que se debe tomar en la +poblaci贸n a riesgo o en las proyecciones poblacionales DANE; su valor por +defecto es `NULL`.} \item{dpto}{Un `character` (cadena de caracteres) o `numeric` (num茅rico) que contiene el c贸digo o nombre del departamento; su valor por @@ -40,16 +45,17 @@ defecto es `NULL`.} que contiene el c贸digo o nombre del municipio; su valor por defecto es `NULL`.} -\item{sex}{Un `character` (cadena de caracteres) que contiene el sexo`"F"` -para Femenino y `"M"` Masculino; su valor por defecto es `NULL`.} +\item{sex}{Un `character` (cadena de caracteres) que especifica el +sexo: `"F"` para Femenino y `"M"` para Masculino; su valor por defecto +es `NULL`.} } \value{ -Un `numeric` con el calculo de la incidencia para todo Colombia, un +Un `numeric` con el c谩lculo de la incidencia para todo Colombia, un departamento, municipio o sexo especifico. } \description{ Funci贸n que calcula la incidencia de una enfermedad o evento -para todo Colombia, departamento o municipio. +para todo Colombia, un departamento o un municipio. } \examples{ \donttest{ @@ -57,20 +63,26 @@ data(dengue2020) data_limpia <- limpiar_data_sivigila(data_event = dengue2020) # C谩lculo de la incidencia con proyecciones poblacionales por departamento data_agrupada_mpios <- agrupar_mpio(data_limpia, dpto = "Antioquia") -calcular_incidencia(data_agrupada = data_agrupada_mpios, - poblacion = "proyecciones", - dpto = "05", - year = 2020) +calcular_incidencia( + data_agrupada = data_agrupada_mpios, + poblacion = "proyecciones", + dpto = "05", + year = 2020 +) # C谩lculo de la incidencia con proyecciones poblacionales por municipio -calcular_incidencia(data_agrupada = data_agrupada_mpios, - poblacion = "proyecciones", - dpto = "Antioquia", - mpio = "05001", - year = 2020) +calcular_incidencia( + data_agrupada = data_agrupada_mpios, + poblacion = "proyecciones", + dpto = "Antioquia", + mpio = "05001", + year = 2020 +) # C谩lculo de la incidencia con poblaci贸n a riesgo para Colombia data_agrupada_dptos <- agrupar_dpto(data_limpia) -calcular_incidencia(poblacion = "riesgo", - data_agrupada = data_agrupada_dptos, - year = 2020) +calcular_incidencia( + poblacion = "riesgo", + data_agrupada = data_agrupada_dptos, + year = 2020 +) } } diff --git a/man/calcular_incidencia_geo.Rd b/man/calcular_incidencia_geo.Rd index 31762f2f..3aa9acb2 100644 --- a/man/calcular_incidencia_geo.Rd +++ b/man/calcular_incidencia_geo.Rd @@ -6,6 +6,7 @@ \usage{ calcular_incidencia_geo( data_incidencia = NULL, + cache = FALSE, data_agrupada, poblacion = NULL, year = NULL @@ -13,22 +14,26 @@ calcular_incidencia_geo( } \arguments{ \item{data_incidencia}{Un `data.frame` que contiene las proyecciones -poblaciones del DANE; su valor por defecto es `NULL`.} +poblacionales del DANE; su valor por defecto es `NULL`.} + +\item{cache}{Un `logical` (`TRUE` o `FALSE`) que indica si la poblaci贸n a +riesgo o las proyecciones poblacionales DANE descargadas deben ser +almacenados en cach茅. Su valor por defecto es `FALSE`.} \item{data_agrupada}{Un `data.frame` que contiene los datos de la enfermedad agrupados por departamento o municipio y n煤mero de casos.} \item{poblacion}{Un `character` (cadena de caracteres) con el tipo de -poblaci贸n para efectuar el calculo de la incidencia. Indica si se -desea utilizar la poblaci贸n a riesgo del evento `"riesgo"` o las -proyecciones poblacionales DANE `"proyecciones"`; su valor por defecto -es `NULL`.} +poblaci贸n para calcular la incidencia. Puede ser `"riesgo"` para la poblaci贸n +a riesgo o `"proyecciones"` para las proyecciones poblacionales DANE; +su valor por defecto es `NULL`.} -\item{year}{Un `numeric` (numerico) con el a帽o que se debe tomar de las -proyecciones poblacionales.} +\item{year}{Un `numeric` (num茅rico) con el a帽o que se debe tomar en la +poblaci贸n a riesgo o en las proyecciones poblacionales DANE; su valor por +defecto es `NULL`.} } \value{ -Un `data.frame` con el calculo de la incidencia para todos los +Un `data.frame` con el c谩lculo de la incidencia para todos los departamentos de Colombia o los municipios de un departamento. } \description{ @@ -41,13 +46,17 @@ data(dengue2020) data_limpia <- limpiar_data_sivigila(data_event = dengue2020) data_agrupada_mpios <- agrupar_mpio(data_limpia, dpto = "Antioquia") # C谩lculo de la incidencia con poblaci贸n a riesgo por departamento -calcular_incidencia_geo(poblacion = "riesgo", - data_agrupada = data_agrupada_mpios, - year = 2020) +calcular_incidencia_geo( + poblacion = "riesgo", + data_agrupada = data_agrupada_mpios, + year = 2020 +) data_agrupada_dptos <- agrupar_dpto(data_limpia) # C谩lculo de la incidencia con proyecciones poblacionales para Colombia -calcular_incidencia_geo(poblacion = "proyecciones", - data_agrupada = data_agrupada_dptos, - year = 2020) +calcular_incidencia_geo( + poblacion = "proyecciones", + data_agrupada = data_agrupada_dptos, + year = 2020 +) } } diff --git a/man/calcular_incidencia_sex.Rd b/man/calcular_incidencia_sex.Rd index 7d0311e2..7a8f07c0 100644 --- a/man/calcular_incidencia_sex.Rd +++ b/man/calcular_incidencia_sex.Rd @@ -6,6 +6,7 @@ \usage{ calcular_incidencia_sex( data_incidencia = NULL, + cache = FALSE, data_agrupada, year = NULL, dpto = NULL, @@ -13,14 +14,19 @@ calcular_incidencia_sex( ) } \arguments{ -\item{data_incidencia}{Un `data.frame` que contiene la proyecciones +\item{data_incidencia}{Un `data.frame` que contiene las proyecciones poblacionales del DANE; su valor por defecto es `NULL`.} +\item{cache}{Un `logical` (`TRUE` o `FALSE`) que indica si la poblaci贸n a +riesgo o las proyecciones poblacionales DANE descargadas deben ser +almacenados en cach茅. Su valor por defecto es `FALSE`.} + \item{data_agrupada}{Un `data.frame` que contiene los datos de la enfermedad agrupados por departamento o municipio y n煤mero de casos.} -\item{year}{Un `numeric` (numerico) con el a帽o que se debe tomar de las -proyecciones poblacionales; valor por defecto es `NULL`.} +\item{year}{Un `numeric` (num茅rico) con el a帽o que se debe tomar en la +poblaci贸n a riesgo o en las proyecciones poblacionales DANE; su valor por +defecto es `NULL`.} \item{dpto}{Un `character` (cadena de caracteres) o `numeric` (num茅rico) que contiene el c贸digo o nombre del departamento; su valor por @@ -31,13 +37,13 @@ que contiene el c贸digo o nombre del municipio; su valor por defecto es `NULL`.} } \value{ -Un `data.frame` con el calculo de la incidencia para todos los -departamentos de Colombia o los municipios de un departamento. +Un `data.frame` con el c谩lculo de la incidencia para todos los +departamentos de Colombia o los municipios de un departamento por sexo. } \description{ Funci贸n que calcula la incidencia de una enfermedad o evento para todos los departamentos de Colombia o los municipios de un departamento -por sexo. +por cada sexo. } \examples{ \donttest{ @@ -45,19 +51,27 @@ data(dengue2020) data_limpia <- limpiar_data_sivigila(data_event = dengue2020) # C谩lculo de la incidencia con proyecciones poblacionales por sexo y # departamento -data_filtrada <- geo_filtro(data_event = data_limpia, - dpto = "05") +data_filtrada <- geo_filtro( + data_event = data_limpia, + dpto = "05" +) data_agrupada <- agrupar_sex(data_filtrada) -calcular_incidencia_sex(data_agrupada = data_agrupada, - dpto = "05", - year = 2020) +calcular_incidencia_sex( + data_agrupada = data_agrupada, + dpto = "05", + year = 2020 +) #' C谩lculo de la incidencia con proyecciones poblacionales por sexo y # municipio -data_filtrada <- geo_filtro(data_event = data_limpia, - dpto = "05", - mpio = "Medellin") -calcular_incidencia_sex(data_agrupada = data_agrupada, - dpto = "05", - mpio = "Medellin") +data_filtrada <- geo_filtro( + data_event = data_limpia, + dpto = "05", + mpio = "Medellin" +) +calcular_incidencia_sex( + data_agrupada = data_agrupada, + dpto = "05", + mpio = "Medellin" +) } } diff --git a/man/concatenar_vals_token.Rd b/man/concatenar_vals_token.Rd index c7982833..5fc0378e 100644 --- a/man/concatenar_vals_token.Rd +++ b/man/concatenar_vals_token.Rd @@ -8,20 +8,20 @@ concatenar_vals_token( vals, longitud = 3, princ_token = ", ", - final_token = "y " + final_token = "y" ) } \arguments{ \item{vals}{Un `array` (arreglo) de character (cadena de caracteres) que contiene los valores que se desean concatenar.} -\item{longitud}{Un `numeric` (numerico) que contiene la longitud de +\item{longitud}{Un `numeric` (num茅rico) que contiene la longitud de los valores que se desean concatenar; su valor por defecto es `3`.} \item{princ_token}{Un `character` (cadena de caracteres) que contiene el separador o token principal; su valor por defecto es `", "`.} -\item{final_token}{Un `character` (cadena de caracteres) que contien el +\item{final_token}{Un `character` (cadena de caracteres) que contiene el separador o token final; su valor por defecto es `"y "`.} } \value{ diff --git a/man/convert_edad.Rd b/man/convert_edad.Rd index d1efab16..a29388ae 100644 --- a/man/convert_edad.Rd +++ b/man/convert_edad.Rd @@ -4,7 +4,12 @@ \alias{convert_edad} \title{Convertir edad a a帽os} \usage{ -convert_edad(data_event, col_edad = "edad", col_uni_med = "uni_med") +convert_edad( + data_event, + col_edad = "edad", + col_uni_med = "uni_med", + uni_med = 1 +) } \arguments{ \item{data_event}{Un `data.frame` que contiene los datos de una @@ -17,19 +22,26 @@ la enfermedad o evento; su valor por defecto es `"edad"`.} \item{col_uni_med}{Un `character` (cadena de caracteres) con el nombre de la columna que contiene las unidades de medida en los datos de una enfermedad o evento; su valor por defecto es `"uni_med"`.} + +\item{uni_med}{Un `numeric` (num茅rico) o `character`(cadena de +caracteres) que contiene la unidad de medida a la que se debe +estandarizar la edad; su valor por defecto es `1`.} } \value{ -Un `data.frame` con las edades en a帽os seg煤n las unidades de medida -del SIVIGILA. +Un `data.frame` con las edades convertidas en a帽os seg煤n las +unidades de medida del SIVIGILA. } \description{ -Funci贸n que convierte las edades en a帽os seg煤n las unidades de +Funci贸n que convierte las edades a a帽os seg煤n las unidades de medida del SIVIGILA. } \examples{ data(dengue2020) data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -convert_edad(data_event = data_limpia, - col_edad = "edad", - col_uni_med = "uni_med") +convert_edad( + data_event = data_limpia, + col_edad = "edad", + col_uni_med = "uni_med", + uni_med = 1 +) } diff --git a/man/estandarizar_geo_cods.Rd b/man/estandarizar_geo_cods.Rd index 7527aa6c..47766b1d 100644 --- a/man/estandarizar_geo_cods.Rd +++ b/man/estandarizar_geo_cods.Rd @@ -9,15 +9,15 @@ estandarizar_geo_cods(data_event) } \arguments{ \item{data_event}{Un `data.frame` que contiene los datos de una -enfermedad o evento.} +enfermedad o evento con c贸digos geogr谩ficos.} } \value{ -Un `data.frame` que contiene los c贸digos geogr谩ficos estandarizados +Un `data.frame` con los c贸digos geogr谩ficos estandarizados de los datos de una enfermedad o evento seg煤n la codificaci贸n del DIVIPOLA. } \description{ Funci贸n que estandariza los c贸digos geogr谩ficos de los datos -de una enfermedad o evento seg煤n la codificaci贸n del DIVIPOLA +de una enfermedad o evento seg煤n la codificaci贸n del DIVIPOLA. } \examples{ data(dengue2020) diff --git a/man/format_cod_geo.Rd b/man/format_cod_geo.Rd index f59db0f5..20a025d5 100644 --- a/man/format_cod_geo.Rd +++ b/man/format_cod_geo.Rd @@ -7,7 +7,7 @@ format_cod_geo(cod_geo, etiqueta, digitos, tam) } \arguments{ -\item{cod_geo}{Un `numeric` (numerico) o `character` +\item{cod_geo}{Un `numeric` (num茅rico) o `character` (cadena de caracteres) que contiene el c贸digo geogr谩fico.} \item{etiqueta}{Un `character` (cadena de caracteres) con el nombre @@ -15,10 +15,10 @@ de la etiqueta de la validaci贸n relacionada a la longitud m谩xima del c贸digo geogr谩fico; se refiere al tipo de divisi贸n geogr谩fica ("municipio", "departamento").} -\item{digitos}{Un `numeric` (numerico) que contiende el n煤mero de digitos +\item{digitos}{Un `numeric` (num茅rico) que contiene el n煤mero de digitos que debe tener individualmente el c贸digo geogr谩fico.} -\item{tam}{Un `numeric` (numerico) que contiende el tama帽o o la longitud +\item{tam}{Un `numeric` (num茅rico) que contiende el tama帽o o la longitud m谩xima que debe tener el c贸digo geogr谩fico.} } \value{ diff --git a/man/format_fecha.Rd b/man/format_fecha.Rd index 8912e5e1..a3de9be2 100644 --- a/man/format_fecha.Rd +++ b/man/format_fecha.Rd @@ -14,9 +14,9 @@ de un evento o enfermedad.} que contiene el formato deseado de la fecha; su valor por defecto es `"\%Y-\%m-\%d"`.} -\item{nomb_cols}{Un `character` (cadena de caracteres) que -contiene los nombres de la columna a formatear en los datos de -una enfermedad o evento; su valor por defecto es `NULL`.} +\item{nomb_cols}{Un `character` (cadena de caracteres) o `array` de +`character` que contiene los nombres de la columnas a formatear en +los datos de una enfermedad o evento; su valor por defecto es `NULL`.} } \value{ Un `data.frame` con los datos con las fechas formateadas. diff --git a/man/import_data_event.Rd b/man/import_data_event.Rd index 87727170..a4107c0b 100644 --- a/man/import_data_event.Rd +++ b/man/import_data_event.Rd @@ -5,17 +5,22 @@ \title{Importar los datos de una enfermedad o evento por a帽o desde los microdatos del SIVIGILA} \usage{ -import_data_event(nombre_event, years, cache = TRUE) +import_data_event(nombre_event, years, ruta_dir = NULL, cache = FALSE) } \arguments{ \item{nombre_event}{Un `character` (cadena de caracteres) con el nombre de la enfermedad o evento.} -\item{years}{Un `numeric` (numerico) con el a帽o o a帽os deseado(s) para +\item{years}{Un `numeric` (num茅rico) con el a帽o o a帽os deseado(s) para la descarga de los datos.} -\item{cache}{Un `boolean` (`TRUE` o `FALSE`) que indica si los datos -descargados deben ser almacenados en cach茅; su valor por defecto es `TRUE`.} +\item{ruta_dir}{Un `character` (cadena de caracteres) que contiene la ruta +del directorio donde se almacenar谩n los datos del evento o enfermedad. +Su valor por defecto es `NULL`.} + +\item{cache}{Un `logical` (`TRUE` o `FALSE`) que indica si los datos +descargados deben ser almacenados en cach茅. Su valor por defecto +es `FALSE`.} } \value{ Un `data.frame` con los datos del a帽o de la enfermedad o evento @@ -32,10 +37,10 @@ import_data_event(nombre_event = "DENGUE", cache = TRUE) } \donttest{ -import_data_event(nombre_event = "ZIKA", +import_data_event(nombre_event = "CHAGAS", years = c(2019, 2020), cache = TRUE) -import_data_event(nombre_event = "ZIKA", +import_data_event(nombre_event = "CHAGAS", years = seq(2018, 2020), cache = TRUE) } diff --git a/man/import_geo_cods.Rd b/man/import_geo_cods.Rd index cb4ee8fc..41623e01 100644 --- a/man/import_geo_cods.Rd +++ b/man/import_geo_cods.Rd @@ -7,9 +7,9 @@ import_geo_cods(descargar = FALSE) } \arguments{ -\item{descargar}{Un `boolean` (`TRUE` o `FALSE`) que indica si los -datos se deben descargar desde la API de datos abiertos; su valor por -defecto es `FALSE`.} +\item{descargar}{Un `logical` (`TRUE` o `FALSE`) que indica si los +datos deben descargarse desde la API de datos abiertos de Colombia; +su valor por defecto es `FALSE`.} } \value{ Un `data.frame` con los nombres y c贸digos de los departamentos diff --git a/man/import_pob_incidencia.Rd b/man/import_pob_incidencia.Rd index 0f4b35b9..c191e52a 100644 --- a/man/import_pob_incidencia.Rd +++ b/man/import_pob_incidencia.Rd @@ -4,24 +4,38 @@ \alias{import_pob_incidencia} \title{Importar la poblaci贸n para efectuar el c谩lculo de la incidencia} \usage{ -import_pob_incidencia(poblacion = "riesgo", event, year) +import_pob_incidencia( + poblacion = c("riesgo", "proyecciones"), + event, + year, + ruta_dir = NULL, + cache = NULL +) } \arguments{ \item{poblacion}{Un `character` (cadena de caracteres) con el tipo de -poblaci贸n que se desea importar. Indica si se desea descargar la poblaci贸n -a riesgo del evento `"riesgo"` o las proyecciones poblacionales DANE -`"proyecciones"`; su valor por defecto es `"riesgo"`.} +poblaci贸n que se desea importar. Puede ser `"riesgo"` para la poblaci贸n +a riesgo del evento o `"proyecciones"` para las proyecciones poblacionales +DANE; su valor por defecto es `"riesgo"`.} -\item{event}{Un `character` (cadena de caracteres) o un `numeric` (numerico) +\item{event}{Un `character` (cadena de caracteres) o un `numeric` (num茅rico) con el nombre o c贸digo de la enfermedad o evento. Es obligatorio para importar la poblaci贸n a riesgo.} -\item{year}{Un `numeric` (numerico) con el a帽o deseado de la poblaci贸n a +\item{year}{Un `numeric` (num茅rico) con el a帽o deseado de la poblaci贸n a riesgo. Es obligatorio para importar la poblaci贸n a riesgo.} + +\item{ruta_dir}{Un `character` (cadena de caracteres) que especifica la ruta +del directorio donde se almacenar谩n la poblaci贸n a riesgo o las proyecciones +poblacionales DANE. Su valor por defecto es `NULL`.} + +\item{cache}{Un `logical` (`TRUE` o `FALSE`) que indica si la poblaci贸n a +riesgo o las proyecciones poblacionales DANE descargadas deben ser +almacenados en cach茅. Su valor por defecto es `FALSE`.} } \value{ Un `data.frame` con la poblaci贸n a riesgo o las proyecciones -poblacionaldes DANE. +poblacionales DANE. } \description{ Funci贸n que importa la poblaci贸n a riesgo de un evento o diff --git a/man/import_pob_proyecciones.Rd b/man/import_pob_proyecciones.Rd index 80569bed..7c26f69c 100644 --- a/man/import_pob_proyecciones.Rd +++ b/man/import_pob_proyecciones.Rd @@ -4,11 +4,19 @@ \alias{import_pob_proyecciones} \title{Importar las proyecciones DANE del a帽o 2005 hasta el 2035} \usage{ -import_pob_proyecciones(year) +import_pob_proyecciones(year, ruta_dir = NULL, cache = FALSE) } \arguments{ -\item{year}{Un `numeric` (numerico) con el a帽o a importar de las -proyecciones poblacionales DANE.} +\item{year}{Un `numeric` (num茅rico) con el a帽o de las proyecciones +poblacionales DANE que desea importar.} + +\item{ruta_dir}{Un `character` (cadena de caracteres) que especifica la ruta +del directorio donde se almacenar谩n la poblaci贸n a riesgo o las proyecciones +poblacionales DANE. Su valor por defecto es `NULL`.} + +\item{cache}{Un `logical` (`TRUE` o `FALSE`) que indica si la poblaci贸n a +riesgo o las proyecciones poblacionales DANE descargadas deben ser +almacenados en cach茅. Su valor por defecto es `FALSE`.} } \value{ Un `data.frame` con las proyecciones poblacionales DANE. diff --git a/man/import_pob_riesgo.Rd b/man/import_pob_riesgo.Rd index deb31c3c..79a6503e 100644 --- a/man/import_pob_riesgo.Rd +++ b/man/import_pob_riesgo.Rd @@ -4,21 +4,29 @@ \alias{import_pob_riesgo} \title{Importar la poblaci贸n a riesgo de un evento o enfermedad} \usage{ -import_pob_riesgo(event, year) +import_pob_riesgo(event, year, ruta_dir = NULL, cache = FALSE) } \arguments{ -\item{event}{Un `character` (cadena de caracteres) o un `numeric` (numerico) +\item{event}{Un `character` (cadena de caracteres) o un `numeric` (num茅rico) con el nombre o c贸digo de la enfermedad o evento.} -\item{year}{Un `numeric` (numerico) con el a帽o deseado de la poblaci贸n a +\item{year}{Un `numeric` (num茅rico) con el a帽o deseado de la poblaci贸n a riesgo.} + +\item{ruta_dir}{Un `character` (cadena de caracteres) que especifica la ruta +del directorio donde se almacenar谩n la poblaci贸n a riesgo o las proyecciones +poblacionales DANE. Su valor por defecto es `NULL`.} + +\item{cache}{Un `logical` (`TRUE` o `FALSE`) que indica si la poblaci贸n a +riesgo o las proyecciones poblacionales DANE descargadas deben ser +almacenados en cach茅. Su valor por defecto es `FALSE`.} } \value{ Un `data.frame` con la poblaci贸n a riesgo de un a帽o espec铆fico. } \description{ Funci贸n que importa la poblaci贸n a riesgo de un evento -o enfermedad de un a帽o espec铆fico. +o enfermedad para un a帽o espec铆fico. } \examples{ \donttest{ diff --git a/man/import_sep_data.Rd b/man/import_sep_data.Rd index 98f86aea..a2eb2b75 100644 --- a/man/import_sep_data.Rd +++ b/man/import_sep_data.Rd @@ -2,16 +2,21 @@ % Please edit documentation in R/import_data.R \name{import_sep_data} \alias{import_sep_data} -\title{Importar datos con un separador espec铆fico.} +\title{Importar datos con un separador espec铆fico} \usage{ -import_sep_data(ruta_data = NULL, cache = TRUE) +import_sep_data(ruta_data = NULL, ruta_dir = NULL, cache = FALSE) } \arguments{ \item{ruta_data}{Un `character` (cadena de caracteres) que contiene la URL de los datos de SIVIGILA.} -\item{cache}{Un `boolean` (`TRUE` o `FALSE`) que indica si los datos. -descargados deben ser almacenados en cach茅; su valor por defecto es `TRUE`.} +\item{ruta_dir}{Un `character` (cadena de caracteres) que contiene la ruta +del directorio donde se almacenar谩n los datos del evento o enfermedad. +Su valor por defecto es `NULL`.} + +\item{cache}{Un `logical` (`TRUE` o `FALSE`) que indica si los datos +descargados deben ser almacenados en cach茅. Su valor por defecto +es `FALSE`.} } \value{ Un `data.frame` con los datos tabulados. diff --git a/man/import_shape_map.Rd b/man/import_shape_map.Rd index c9654f14..1b564c75 100644 --- a/man/import_shape_map.Rd +++ b/man/import_shape_map.Rd @@ -4,10 +4,19 @@ \alias{import_shape_map} \title{Importar el Shapefile del mapa de Colombia} \usage{ -import_shape_map() +import_shape_map(ruta_dir = NULL, cache = FALSE) +} +\arguments{ +\item{ruta_dir}{Un `character` (cadena de caracteres) que contiene la +ruta del directorio donde se almacenar谩 el Shapefile del mapa de +Colombia. Su valor por defecto es `NULL`.} + +\item{cache}{Un `logical` (`TRUE` o `FALSE`) que indica si el Shapefile +del mapa de Colombia debe ser almacenado en cach茅. Su valor por defecto +es `FALSE`.} } \value{ -Un objeto `sf` que contiene los elementos del shapefile +Un objeto `sf` que contiene los elementos del Shapefile del mapa. } \description{ diff --git a/man/limpiar_data_sivigila.Rd b/man/limpiar_data_sivigila.Rd index 72b29f15..754458d6 100644 --- a/man/limpiar_data_sivigila.Rd +++ b/man/limpiar_data_sivigila.Rd @@ -4,18 +4,22 @@ \alias{limpiar_data_sivigila} \title{Limpiar datos de SIVIGILA} \usage{ -limpiar_data_sivigila(data_event) +limpiar_data_sivigila(data_event, uni_med_edad = 1) } \arguments{ \item{data_event}{Un `data.frame` que contiene los datos de una enfermedad o evento.} + +\item{uni_med_edad}{Un `numeric` (num茅rico) o `character`(cadena de +caracteres) que contiene la unidad de medida a la que se debe estandarizar +la edad; su valor por defecto es `1`.} } \value{ Un `data.frame` con los datos limpios de la enfermedad o evento. } \description{ Funci贸n que limpia los datos seleccionados de una enfermedad -o evento de la fuente SIVIGILA. +o evento provenientes de la fuente SIVIGILA. } \examples{ data(dengue2020) diff --git a/man/limpiar_edad_event.Rd b/man/limpiar_edad_event.Rd index 0dd2f6d4..36af2d1c 100644 --- a/man/limpiar_edad_event.Rd +++ b/man/limpiar_edad_event.Rd @@ -20,14 +20,16 @@ con las edades limpias. } \description{ Funci贸n que limpia y estandariza las edades de los datos -de una enfermedad o evento, conviertiendolas en a帽os, seg煤n la +de una enfermedad o evento, convirti茅ndolas en a帽os, seg煤n la clasificaci贸n del Instituto Nacional de Salud: -No aplica = 0 -A帽os = 1 -Meses = 2 -D铆as = 3 -Horas = 4 -Minutos = 5. +\itemize{ + \item No aplica = 0 + \item A帽os = 1 + \item Meses = 2 + \item D铆as = 3 + \item Horas = 4 + \item Minutos = 5 +} } \examples{ data(dengue2020) diff --git a/man/limpiar_encabezado.Rd b/man/limpiar_encabezado.Rd index 1fb33f89..938d58a7 100644 --- a/man/limpiar_encabezado.Rd +++ b/man/limpiar_encabezado.Rd @@ -12,7 +12,7 @@ enfermedad o evento.} } \value{ Un `data.frame` con las etiquetas del encabezado formateadas -con gui贸n bajo (_). +con guiones bajos (_). } \description{ Funci贸n que limpia las etiquetas del encabezado de los diff --git a/man/limpiar_fecha_event.Rd b/man/limpiar_fecha_event.Rd index 683428cc..0e0808c3 100644 --- a/man/limpiar_fecha_event.Rd +++ b/man/limpiar_fecha_event.Rd @@ -16,7 +16,7 @@ limpiar_fecha_event( \item{data_event}{Un `data.frame` que contiene los datos de una enfermedad o evento.} -\item{year}{Un `numeric` (numerico) o `character` (cadena de caracteres) +\item{year}{Un `numeric` (num茅rico) o `character` (cadena de caracteres) que contiene el a帽o de los datos de una enfermedad o evento.} \item{format_fecha}{Un `character` (cadena de caracteres) que contiene @@ -27,7 +27,7 @@ el nombre de la columna con la fecha que se desea limpiar en los datos de la enfermedad o evento.} \item{col_comp}{Un `character` (cadena de caracteres) que contiene el -nombre de la columna con la cual se va a comparar la columna `nomb_col` +nombre de la columna con la cual se va a comparar la columna `col_fecha` para limpiarla, estandarizarla o aplicar las reglas definidas.} } \value{ @@ -40,9 +40,11 @@ de una enfermedad o evento. \examples{ data(dengue2020) data_limpia <- limpiar_data_sivigila(data_event = dengue2020) -limpiar_fecha_event(data_event = data_limpia, - year = 2020, - format_fecha = "\%Y-\%m-\%d", - col_fecha = "ini_sin", - col_comp = "fec_hos") +limpiar_fecha_event( + data_event = data_limpia, + year = 2020, + format_fecha = "\%Y-\%m-\%d", + col_fecha = "ini_sin", + col_comp = "fec_hos" +) } diff --git a/man/limpiar_val_atipic.Rd b/man/limpiar_val_atipic.Rd index 964ef8ed..d783896b 100644 --- a/man/limpiar_val_atipic.Rd +++ b/man/limpiar_val_atipic.Rd @@ -2,7 +2,7 @@ % Please edit documentation in R/cleaning_data.R \name{limpiar_val_atipic} \alias{limpiar_val_atipic} -\title{Limpiar los valores atipicos de los datos} +\title{Limpiar los valores at铆picos de los datos} \usage{ limpiar_val_atipic(data_event) } @@ -12,13 +12,14 @@ enfermedad o evento.} } \value{ Un `data.frame` con los datos de una enfermedad o -evento con los valores at铆picos limpios (NA). +evento con los valores at铆picos limpios (convertidos a `NA`). } \description{ -Funci贸n que limpia los valores atipicos de los datos +Funci贸n que limpia los valores at铆picos de los datos de una enfermedad o evento del SIVIGILA. } \examples{ data(dengue2020) data_limpia <- limpiar_encabezado(data_event = dengue2020) +limpiar_val_atipic(data_limpia) } diff --git a/man/list_events.Rd b/man/list_events.Rd index ce612591..792f3790 100644 --- a/man/list_events.Rd +++ b/man/list_events.Rd @@ -2,8 +2,8 @@ % Please edit documentation in R/import_data.R \name{list_events} \alias{list_events} -\title{Importar las enfermedades y a帽os disponibles disposibles -para su descarga desde los microdatos del SIVIGILA} +\title{Importar enfermedades y a帽os disponibles para +su descarga desde los microdatos del SIVIGILA} \usage{ list_events() } diff --git a/man/obtener_cond_inciden_event.Rd b/man/obtener_cond_inciden_event.Rd index f4d74e83..9c421a93 100644 --- a/man/obtener_cond_inciden_event.Rd +++ b/man/obtener_cond_inciden_event.Rd @@ -8,7 +8,7 @@ enfermedad o evento} obtener_cond_inciden_event(cod_eve) } \arguments{ -\item{cod_eve}{Un `numeric` (numerico) o `character` (cadena de +\item{cod_eve}{Un `numeric` (num茅rico) o `character` (cadena de caracteres) que contiene el c贸digo de una enfermedad o evento.} } \value{ diff --git a/man/obtener_config_map.Rd b/man/obtener_config_map.Rd index 148b6112..f6dc7ce2 100644 --- a/man/obtener_config_map.Rd +++ b/man/obtener_config_map.Rd @@ -23,7 +23,7 @@ geogr谩fica de los datos de la enfermedad o evento.} } \value{ Una `named list` (lista nombrada) que contiene el departamento, -municipio y el poligono para generar el mapa con los siguientes +municipio y el pol铆gono para generar el mapa con los siguientes nombres para cada uno de estos elementos: `dpto`, `mpio` y `poligono`. } \description{ diff --git a/man/obtener_estetica_escala.Rd b/man/obtener_estetica_escala.Rd index 1aba41f4..33af6cde 100644 --- a/man/obtener_estetica_escala.Rd +++ b/man/obtener_estetica_escala.Rd @@ -2,12 +2,17 @@ % Please edit documentation in R/theme_sivirep.R \name{obtener_estetica_escala} \alias{obtener_estetica_escala} -\title{Obtener la estetica de una escala para un grafico de \pkg{sivirep}} +\title{Obtener la est茅tica de una escala para un gr谩fico de \pkg{sivirep}} \usage{ -obtener_estetica_escala(escala = 0, nombre, etiquetas = NULL) +obtener_estetica_escala( + escala = 0, + nombre, + etiquetas = NULL, + ajustar_texto = FALSE +) } \arguments{ -\item{escala}{Un `numeric` (numerico) que indica la cantidad de valores que +\item{escala}{Un `numeric` (num茅rico) que indica la cantidad de valores que contiene la escala.} \item{nombre}{Un `character` (cadena de caracteres) que contiene el nombre diff --git a/man/obtener_eventos_relacionados.Rd b/man/obtener_eventos_relacionados.Rd index c0b45bd7..253fdcc3 100644 --- a/man/obtener_eventos_relacionados.Rd +++ b/man/obtener_eventos_relacionados.Rd @@ -10,7 +10,7 @@ obtener_eventos_relacionados(nombre_event, years) \item{nombre_event}{Un `character` (cadena de caracteres) con el nombre de la enfermedad o evento.} -\item{years}{Un `numeric` (numerico) el a帽o o a帽os deseados para +\item{years}{Un `numeric` (num茅rico) con el a帽o o a帽os deseados para la descarga de los datos.} } \value{ diff --git a/man/obtener_fila_mas_casos.Rd b/man/obtener_fila_mas_casos.Rd index 27390294..8b512892 100644 --- a/man/obtener_fila_mas_casos.Rd +++ b/man/obtener_fila_mas_casos.Rd @@ -2,7 +2,7 @@ % Please edit documentation in R/utils.R \name{obtener_fila_mas_casos} \alias{obtener_fila_mas_casos} -\title{Obtener fila con mayor n煤mero de casos} +\title{Obtener la fila con mayor n煤mero de casos} \usage{ obtener_fila_mas_casos(data_event, nomb_col = "casos", porcentaje = TRUE) } @@ -14,7 +14,7 @@ enfermedad o evento.} nombre de la columna que contiene el n煤mero de casos en los datos de la enfermedad o evento.} -\item{porcentaje}{Un `boolean` (TRUE/FALSE) que indica si se +\item{porcentaje}{Un `logical` (`TRUE` o `FALSE`) que indica si se requiere agregar un porcentaje de casos como columna.} } \value{ @@ -26,9 +26,13 @@ Funci贸n que obtiene la fila con el mayor n煤mero de casos. \examples{ data(dengue2020) data_limpia <- limpiar_data_sivigila(dengue2020) -casos_sex <- agrupar_sex(data_event = data_limpia, - porcentaje = TRUE) -obtener_fila_mas_casos(data_event = casos_sex, - nomb_col = "casos", - porcentaje = TRUE) +casos_sex <- agrupar_sex( + data_event = data_limpia, + porcentaje = TRUE +) +obtener_fila_mas_casos( + data_event = casos_sex, + nomb_col = "casos", + porcentaje = TRUE +) } diff --git a/man/obtener_info_depts.Rd b/man/obtener_info_depts.Rd index 51471e3e..bfed6e3a 100644 --- a/man/obtener_info_depts.Rd +++ b/man/obtener_info_depts.Rd @@ -7,11 +7,11 @@ obtener_info_depts(dpto = NULL, mpio = NULL) } \arguments{ -\item{dpto}{Un `character` (cadena de caracteres) o `numeric` (numerico) +\item{dpto}{Un `character` (cadena de caracteres) o `numeric` (num茅rico) que contiene el nombre o c贸digo del departamento; su valor por defecto es `NULL`.} -\item{mpio}{Un `character` (cadena de caracteres) o `numeric` (numerico) +\item{mpio}{Un `character` (cadena de caracteres) o `numeric` (num茅rico) que contiene el nombre o c贸digo del municipio; su valor por defecto es `NULL`.} } diff --git a/man/obtener_meses_mas_casos.Rd b/man/obtener_meses_mas_casos.Rd index f21de042..6e10130b 100644 --- a/man/obtener_meses_mas_casos.Rd +++ b/man/obtener_meses_mas_casos.Rd @@ -14,7 +14,7 @@ obtener_meses_mas_casos( } \arguments{ \item{data_event}{Un `data.frame` con los datos de la enfermedad -o vento.} +o evento.} \item{col_fechas}{Un `array` (arreglo) de `character` (cadena de caracteres) con los nombres de las columnas que contienen las fechas en los datos de la @@ -24,10 +24,10 @@ enfermedad o evento.} columna de los datos de la enfermedad o evento que contiene el n煤mero de casos; su valor por defecto es `"casos"`.} -\item{top}{Un `numeric` (numerico) que contiene la cantidad m谩xima +\item{top}{Un `numeric` (num茅rico) que contiene la cantidad m谩xima de meses a retornar; su valor por defecto es `3`.} -\item{concat_vals}{Un `boolean` (TRUE/FALSE) que indica si se requiere +\item{concat_vals}{Un `logical` (`TRUE` o `FALSE`) que indica si se requiere concatenar los meses como una cadena; su valor por defecto es `TRUE`.} } \value{ @@ -40,9 +40,11 @@ Funci贸n que obtiene los meses con el mayor n煤mero de casos data(dengue2020) data_limpia <- limpiar_data_sivigila(dengue2020) casos_inisintomas <- agrupar_fecha_inisintomas(data_limpia) -obtener_meses_mas_casos(data_event= casos_inisintomas, - col_fechas = "ini_sin", - col_casos = "casos", - top = 3, - concat_vals = TRUE) +obtener_meses_mas_casos( + data_event = casos_inisintomas, + col_fechas = "ini_sin", + col_casos = "casos", + top = 3, + concat_vals = TRUE +) } diff --git a/man/obtener_nombre_dpto.Rd b/man/obtener_nombre_dpto.Rd index d49693fd..15dcb75c 100644 --- a/man/obtener_nombre_dpto.Rd +++ b/man/obtener_nombre_dpto.Rd @@ -10,7 +10,7 @@ obtener_nombre_dpto(data_geo, cod_dpto) \item{data_geo}{Un `data.frame` que contiene los c贸digos geogr谩ficos (departamentos y municipios de Colombia).} -\item{cod_dpto}{Un `numeric` (numerico) o `character` +\item{cod_dpto}{Un `numeric` (num茅rico) o `character` (cadena de caracteres) que contiene el c贸digo del departamento.} } @@ -25,9 +25,12 @@ Colombia a partir de su c贸digo geogr谩fico. \examples{ data_geo <- import_geo_cods() obtener_nombre_dpto(data_geo, - cod_dpto = "05") + cod_dpto = "05" +) obtener_nombre_dpto(data_geo, - cod_dpto = 05) + cod_dpto = 05 +) obtener_nombre_dpto(data_geo, - cod_dpto = 5) + cod_dpto = 5 +) } diff --git a/man/obtener_nombre_mpio.Rd b/man/obtener_nombre_mpio.Rd index 17269d24..ba2e146a 100644 --- a/man/obtener_nombre_mpio.Rd +++ b/man/obtener_nombre_mpio.Rd @@ -10,10 +10,10 @@ obtener_nombre_mpio(data_geo, cod_dpto, cod_mpio) \item{data_geo}{Un `data.frame` que contiene los c贸digos geogr谩ficos (departamentos y municipios de Colombia).} -\item{cod_dpto}{Un `numeric` (numerico) o `character` (cadena de caracteres) +\item{cod_dpto}{Un `numeric` (num茅rico) o `character` (cadena de caracteres) que contiene el c贸digo del departamento.} -\item{cod_mpio}{Un `numeric` (numerico) o `character` +\item{cod_mpio}{Un `numeric` (num茅rico) o `character` (cadena de caracteres) que contiene el c贸digo del municipio.} } \value{ @@ -21,17 +21,20 @@ Un `character` (cadena de caracteres) con el nombre del municipio. } \description{ Funci贸n que obtiene el nombre de un municipio de Colombia a -partir de su c贸digo geogr谩fico +partir de su c贸digo geogr谩fico. } \examples{ data_geo <- import_geo_cods() obtener_nombre_mpio(data_geo, - cod_dpto = "05", - cod_mpio = "001") + cod_dpto = "05", + cod_mpio = "001" +) obtener_nombre_mpio(data_geo, - cod_dpto = 05, - cod_mpio = 001) + cod_dpto = 05, + cod_mpio = 001 +) obtener_nombre_mpio(data_geo, - cod_dpto = 5, - cod_mpio = 1) + cod_dpto = 5, + cod_mpio = 1 +) } diff --git a/man/obtener_pob_incidencia.Rd b/man/obtener_pob_incidencia.Rd index 65a27fa2..7a174361 100644 --- a/man/obtener_pob_incidencia.Rd +++ b/man/obtener_pob_incidencia.Rd @@ -4,38 +4,52 @@ \alias{obtener_pob_incidencia} \title{Obtener la poblaci贸n para efectuar el c谩lculo de la incidencia} \usage{ -obtener_pob_incidencia(data_incidencia = NULL, poblacion, event, year) +obtener_pob_incidencia( + data_incidencia = NULL, + poblacion, + event, + year, + ruta_dir = NULL, + cache = FALSE +) } \arguments{ \item{data_incidencia}{Un `data.frame` que contiene la poblaci贸n a riesgo o las proyecciones poblaciones DANE. Si este par谩metro est谩 vac铆o importar谩 la poblaci贸n a riesgo o las proyecciones dependiendo de la disponibilidad de -la informaci贸n y las condiciones del evento o engermedad; su valor por +la informaci贸n y las condiciones del evento o enfermedad; su valor por defecto es `NULL`.} \item{poblacion}{Un `character` (cadena de caracteres) con el tipo de -poblaci贸n que se desea obtener. Indica si se desea obtener la poblaci贸n -a riesgo del evento `"riesgo"` o las proyecciones poblacionales DANE -`"proyecciones"`.} +poblaci贸n que se desea obtener. Puede ser `"riesgo"` para la poblaci贸n +a riesgo del evento o `"proyecciones"` para las proyecciones poblacionales +DANE.} -\item{event}{Un `character` (cadena de caracteres) o un `numeric` (numerico) +\item{event}{Un `character` (cadena de caracteres) o un `numeric` (num茅rico) con el nombre o c贸digo de la enfermedad o evento. Es obligatorio para obtener la poblaci贸n a riesgo.} -\item{year}{Un `numeric` (numerico) con el a帽o deseado de la poblaci贸n a +\item{year}{Un `numeric` (num茅rico) con el a帽o deseado de la poblaci贸n a riesgo. Es obligatorio para obtener la poblaci贸n a riesgo.} + +\item{ruta_dir}{Un `character` (cadena de caracteres) que especifica la ruta +del directorio donde se almacenar谩n la poblaci贸n a riesgo o las proyecciones +poblacionales DANE. Su valor por defecto es `NULL`.} + +\item{cache}{Un `logical` (`TRUE` o `FALSE`) que indica si la poblaci贸n a +riesgo o las proyecciones poblacionales DANE descargadas deben ser +almacenados en cach茅. Su valor por defecto es `FALSE`.} } \value{ Un `data.frame` con la poblaci贸n a riesgo o las proyecciones -poblacionaldes DANE. +poblacionales DANE. } \description{ Funci贸n que obtiene la poblaci贸n a riesgo de un evento o enfermedad o las proyecciones poblacionales DANE desde el a帽o 2005 hasta -el 2035. -Si no hay poblaci贸n a riesgo disponible del evento o enfermedad para el a帽o -seleccionado se obtendr谩 las proyecciones poblacionales DANE y se mostrar谩n -mensajes de advertencia al usuario dependendiendo del tipo de poblaci贸n +el 2035. Si no hay poblaci贸n a riesgo disponible del evento o enfermedad +para el a帽o seleccionado, se obtendr谩n las proyecciones poblacionales DANE +y se mostrar谩n mensajes al usuario dependendiendo del tipo de poblaci贸n obtenida. } \keyword{internal} diff --git a/man/obtener_ruta_data_event_year.Rd b/man/obtener_ruta_data_event_year.Rd index 84a404e0..02ae53e1 100644 --- a/man/obtener_ruta_data_event_year.Rd +++ b/man/obtener_ruta_data_event_year.Rd @@ -10,7 +10,7 @@ obtener_ruta_data_event_year(nombre_event, year) \item{nombre_event}{Un `character` (cadena de caracteres) con el nombre de la enfermedad o evento.} -\item{years}{Un `numeric` (numerico) con el a帽o o a帽os deseado(s) para +\item{year}{Un `numeric` (num茅rico) con el a帽o o a帽os deseado(s) para la descarga de los datos.} } \value{ @@ -19,7 +19,7 @@ descargar los datos de una enfermedad o evento por un a帽o espec铆fico de la fuente SIVIGILA. } \description{ -Funci贸n que obtiene la ruta o URL del servicio SIVIGILA para +Funci贸n que obtiene la ruta o URL de la API del SIVIGILA para descargar los datos de una enfermedad o evento para un a帽o espec铆fico. } \keyword{internal} diff --git a/man/obtener_ruta_dir.Rd b/man/obtener_ruta_dir.Rd new file mode 100644 index 00000000..742cf042 --- /dev/null +++ b/man/obtener_ruta_dir.Rd @@ -0,0 +1,30 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils.R +\name{obtener_ruta_dir} +\alias{obtener_ruta_dir} +\title{Obtener la ruta del directorio donde se almacenar谩n +los datos del evento o enfermedad} +\usage{ +obtener_ruta_dir(ruta_dir = NULL, mensaje_error) +} +\arguments{ +\item{ruta_dir}{Un `character` (cadena de caracteres) que contiene la ruta +del directorio donde se almacenar谩n los datos del evento o enfermedad. +Su valor por defecto es `NULL`.} + +\item{mensaje_error}{Un `character` (cadena de caracteres) con +el mensaje de error que se debe mostrar en caso de que no se +encuentre la direcci贸n del directorio especificada en el +par谩metro`ruta_dir` o no sea posible crear o almacenar los +datos en el directorio de cach茅 de `sivirep`.} +} +\value{ +Un `character` (cadena de caracteres) con la ruta +del directorio donde se almacenar谩n los datos del evento o +enfermedad. +} +\description{ +Funci贸n que obtiene la ruta del directorio donde +se almacenar谩n los datos del evento o enfermedad. +} +\keyword{internal} diff --git a/man/obtener_text_sex.Rd b/man/obtener_text_sex.Rd index d701e263..bf2eeac4 100644 --- a/man/obtener_text_sex.Rd +++ b/man/obtener_text_sex.Rd @@ -2,7 +2,7 @@ % Please edit documentation in R/utils.R \name{obtener_text_sex} \alias{obtener_text_sex} -\title{Obtener el parr谩fo de la distribuci贸n de casos por sexo} +\title{Obtener el p谩rrafo de la distribuci贸n de casos por sexo} \usage{ obtener_text_sex(data_agrupada, year, figura) } @@ -10,20 +10,26 @@ obtener_text_sex(data_agrupada, year, figura) \item{data_agrupada}{Un `data.frame` que contiene los datos de la enfermedad o evento agrupados por sexo.} -\item{year}{Un `numeric` (numerico) con el a帽o de los datos +\item{year}{Un `numeric` (num茅rico) con el a帽o de los datos agrupados por sexo.} -\item{figura}{Un `numeric` (numerico) con el n煤mero de la +\item{figura}{Un `numeric` (num茅rico) con el n煤mero de la figura de la distribuci贸n de casos por sexo.} } +\value{ +Un `character` (cadena de caracteres) con el p谩rrafo descriptivo +de la distribuci贸n de casos por sexo. +} \description{ -Funci贸n que obtiene el parr谩fo descriptivo de la secci贸n +Funci贸n que obtiene el p谩rrafo descriptivo de la secci贸n de distribuci贸n de casos por sexo de la plantilla del reporte. } \examples{ data(dengue2020) data_limpia <- limpiar_data_sivigila(dengue2020) -data_agrupada <- agrupar_sex(data_event = data_limpia, - porcentaje = TRUE) +data_agrupada <- agrupar_sex( + data_event = data_limpia, + porcentaje = TRUE +) obtener_text_sex(data_agrupada, year = 2020, figura = 3) } diff --git a/man/obtener_tip_ocurren_geo.Rd b/man/obtener_tip_ocurren_geo.Rd index 63832ad6..f49805f8 100644 --- a/man/obtener_tip_ocurren_geo.Rd +++ b/man/obtener_tip_ocurren_geo.Rd @@ -8,7 +8,7 @@ enfermedad o evento} obtener_tip_ocurren_geo(cod_event = NULL, nombre_event = NULL) } \arguments{ -\item{cod_event}{Un `numeric` (numerico) o `character` +\item{cod_event}{Un `numeric` (num茅rico) o `character` (cadena de caracteres) que contiene el c贸digo de la enfermedad o evento.} \item{nombre_event}{Un `character` (cadena de caracteres) con el nombre de diff --git a/man/obtener_year.Rd b/man/obtener_year.Rd index 52d3d553..150edad5 100644 --- a/man/obtener_year.Rd +++ b/man/obtener_year.Rd @@ -10,6 +10,10 @@ obtener_year(data_event) \item{data_event}{Un `data.frame` que contiene los datos de la enfermedad o evento.} } +\value{ +Un `numeric` (num茅rico) que representa el a帽o de los datos de la +enfermedad o evento. +} \description{ Funci贸n que obtiene el a帽o de los datos de una enfermedad o evento. diff --git a/man/plot_area_geo.Rd b/man/plot_area_geo.Rd index 65a4e751..ab0cb028 100644 --- a/man/plot_area_geo.Rd +++ b/man/plot_area_geo.Rd @@ -10,8 +10,8 @@ plot_area_geo(data_agrupada, col_area = "area", fuente_data = NULL) \item{data_agrupada}{Un `data.frame` que contiene los datos de la enfermedad o evento agrupados.} -\item{col_area}{Un `character` (cadena de car谩cteres) con el nombre de -la columna con el 谩rea geografica en los datos agrupados de la enfermedad +\item{col_area}{Un `character` (cadena de caracteres) con el nombre de +la columna con el 谩rea geogr谩fica en los datos agrupados de la enfermedad o evento; su valor por defecto es `"area"`.} \item{fuente_data}{Un `character` (cadena de caracteres) que contiene la @@ -30,6 +30,7 @@ data(dengue2020) data_limpia <- limpiar_data_sivigila(dengue2020) data_agrupada <- agrupar_area_geo(data_event = data_limpia) plot_area_geo(data_agrupada, - col_area = "area") + col_area = "area" +) } } diff --git a/man/plot_dptos.Rd b/man/plot_dptos.Rd index 6f23ec3c..d5182adc 100644 --- a/man/plot_dptos.Rd +++ b/man/plot_dptos.Rd @@ -10,7 +10,7 @@ plot_dptos(data_agrupada, col_dptos = NULL, fuente_data = NULL) \item{data_agrupada}{Un `data.frame` que contiene los datos de la enfermedad o evento agrupados por departamentos.} -\item{col_dptos}{Un `character` (cadena de car谩cteres) con el nombre de +\item{col_dptos}{Un `character` (cadena de caracteres) con el nombre de la columna que contiene los departamenos en los datos agrupados de la enfermedad o evento; su valor por defecto es `NULL`.} @@ -31,5 +31,6 @@ data_limpia <- limpiar_data_sivigila(dengue2020) data_limpia <- estandarizar_geo_cods(data_limpia) data_agrupada <- agrupar_dpto(data_event = data_limpia) plot_dptos(data_agrupada, - col_dptos = "departamento_ocurrencia") + col_dptos = "departamento_ocurrencia" +) } diff --git a/man/plot_edad.Rd b/man/plot_edad.Rd index fff76ff4..bc0cc8a9 100644 --- a/man/plot_edad.Rd +++ b/man/plot_edad.Rd @@ -10,7 +10,7 @@ plot_edad(data_agrupada, col_edad = "edad", fuente_data = NULL) \item{data_agrupada}{Un `data.frame` que contiene los datos de la enfermedad o evento agrupados.} -\item{col_edad}{Un `character` (cadena de car谩cteres) con el nombre de +\item{col_edad}{Un `character` (cadena de caracteres) con el nombre de la columna que contiene las edades en los datos agrupados de la enfermedad o evento; su valor por defecto es `"edad"`.} @@ -22,13 +22,15 @@ es `NULL`.} Un `plot` o gr谩fico de distribuci贸n de casos por edad. } \description{ -Funci贸n que genera el gr谩fico de distribuci贸n de casos +Funci贸n que genera un gr谩fico de distribuci贸n de casos por edad. } \examples{ data(dengue2020) data_limpia <- limpiar_data_sivigila(dengue2020) data_agrupada <- agrupar_edad(data_event = data_limpia) -plot_edad(data_agrupada = data_agrupada, - col_edad = "edad") +plot_edad( + data_agrupada = data_agrupada, + col_edad = "edad" +) } diff --git a/man/plot_edad_sex.Rd b/man/plot_edad_sex.Rd index 37d4736b..effd0678 100644 --- a/man/plot_edad_sex.Rd +++ b/man/plot_edad_sex.Rd @@ -16,11 +16,11 @@ plot_edad_sex( enfermedad o evento agrupados.} \item{col_edad}{Un `character` (cadena de caracteres) con el nombre de la -columna que contiene las edades en los datos agrupados de la enfermdedad o +columna que contiene las edades en los datos agrupados de la enfermedad o evento; su valor por defecto es `"edad`.} \item{col_sex}{Un `character` (cadena de caracteres) con el nombre de la -columna que contiene el sexo en los datos agrupados de la enfermdedad o +columna que contiene el sexo en los datos agrupados de la enfermedad o evento; su valor por defecto es `"sexo`.} \item{fuente_data}{Un `character` (cadena de caracteres) que contiene la @@ -31,14 +31,16 @@ es `NULL`.} Un `plot` o gr谩fico de distribuci贸n de casos por edad y sexo. } \description{ -Funci贸n que genera el gr谩fico de distribuci贸n de casos por +Funci贸n que genera un gr谩fico de distribuci贸n de casos por edad y sexo. } \examples{ data(dengue2020) data_limpia <- limpiar_data_sivigila(dengue2020) data_agrupada <- agrupar_edad_sex(data_event = data_limpia) -plot_edad_sex(data_agrupada = data_agrupada, - col_edad = "edad", - col_sex = "sexo") +plot_edad_sex( + data_agrupada = data_agrupada, + col_edad = "edad", + col_sex = "sexo" +) } diff --git a/man/plot_fecha_inisintomas.Rd b/man/plot_fecha_inisintomas.Rd index cb57ae7d..cd7c513a 100644 --- a/man/plot_fecha_inisintomas.Rd +++ b/man/plot_fecha_inisintomas.Rd @@ -22,7 +22,7 @@ nombre de la columna con las fechas de notificaci贸n en los datos de la enfermedad o evento agrupados; su valor por defecto es `"ini_sin"`.} \item{uni_marca}{Un `character` (cadena de caracteres) que contiene la unidad -de las marcas del gr谩fico (`"dia"`, `"semanaepi"` y `"mes"``); +de las marcas del gr谩fico (`"dia"`, `"semanaepi"` y `"mes"`); su valor por defecto es `"semanaepi"`.} \item{tipo}{Un `character` (cadena de caracteres) que contiene el tipo de @@ -37,15 +37,18 @@ Un `plot` o gr谩fico de la distribuci贸n de casos por fecha de inicio de s铆ntomas. } \description{ -Funci贸n que genera el gr谩fico de distribuci贸n de casos +Funci贸n que genera un gr谩fico de distribuci贸n de casos por fecha de inicio de s铆ntomas. } \examples{ data(dengue2020) data_limpia <- limpiar_data_sivigila(dengue2020) data_agrupada <- agrupar_fecha_inisintomas( - data_event = data_limpia) -plot_fecha_inisintomas(data_agrupada = data_agrupada, - col_fecha = "ini_sin", - uni_marca = "semanaepi") + data_event = data_limpia +) +plot_fecha_inisintomas( + data_agrupada = data_agrupada, + col_fecha = "ini_sin", + uni_marca = "semanaepi" +) } diff --git a/man/plot_map.Rd b/man/plot_map.Rd index fffeb349..0958e11a 100644 --- a/man/plot_map.Rd +++ b/man/plot_map.Rd @@ -10,7 +10,9 @@ plot_map( col_codigos = NULL, fuente_data = NULL, dpto = NULL, - mpio = NULL + mpio = NULL, + ruta_dir = NULL, + cache = FALSE ) } \arguments{ @@ -18,13 +20,13 @@ plot_map( agrupados por departamento y n煤mero de casos.} \item{col_distribucion}{Un `character` (cadena de caracteres) que contiene el -nombre de la columna que tiene los valores de la distribuci贸n, por n煤mero de -casos o incidencia; su valor por defecto es `"incidencia"`.} +nombre de la columna que tiene los valores de la distribuci贸n, ya sea por +n煤mero de casos o incidencia; su valor por defecto es `"incidencia"`.} \item{col_codigos}{Un `character` (cadena de caracteres) que contiene el -nombre de la columna con los c贸digos de los departamentos o municipios, se -utilizan para obtener los poligonos de las 谩reas geogr谩ficas del archivo -geoespacial o de figuras (Shapefile); su valor por defecto `NULL`.} +nombre de la columna con los c贸digos de los departamentos o municipios, los +cuales se utilizan para obtener los poligonos de las 谩reas geogr谩ficas del +archivo geoespacial o Shapefile; su valor por defecto `NULL`.} \item{fuente_data}{Un `character` (cadena de caracteres) que contiene la leyenda o fuente de informaci贸n de los datos de la enfermedad o evento; @@ -35,10 +37,18 @@ nombre del departamento; su valor por defecto `NULL`.} \item{mpio}{Un `character` (cadena de caracteres) que contiene el nombre del municipio; su valor por defecto `NULL`.} + +\item{ruta_dir}{Un `character` (cadena de caracteres) que contiene la +ruta del directorio donde se almacenar谩 el Shapefile del mapa de +Colombia. Su valor por defecto es `NULL`.} + +\item{cache}{Un `logical` (`TRUE` o `FALSE`) que indica si el Shapefile +del mapa de Colombia debe ser almacenado en cach茅. Su valor por defecto +es `FALSE`.} } \value{ Un `plot` o mapa por departamentos o municipios con el n煤mero de -casos o incidencia de una enfermedad espec铆fica. +casos o incidencia de un evento o enfermedad espec铆fica. } \description{ Funci贸n que genera el mapa por departamentos o municipios con el @@ -51,30 +61,42 @@ data_limpia <- limpiar_data_sivigila(dengue2020) data_estandar <- estandarizar_geo_cods(data_limpia) # Mapa por departamentos data_espacial <- agrupar_dpto(data_event = data_estandar) -plot_map(data_agrupada = data_espacial, - col_distribucion = "casos") +plot_map( + data_agrupada = data_espacial, + col_distribucion = "casos" +) # Mapa por municipios de un departamento especifico -data_filtrada_dpto <- geo_filtro(data_event = data_estandar, - dpto = "Cundinamarca") +data_filtrada_dpto <- geo_filtro( + data_event = data_estandar, + dpto = "Cundinamarca" +) data_espacial_dpto <- agrupar_mpio(data_event = data_filtrada_dpto) -plot_map(data_agrupada = data_espacial_dpto, - col_codigos = "cod_mun_o", - col_distribucion = "casos") +plot_map( + data_agrupada = data_espacial_dpto, + col_codigos = "cod_mun_o", + col_distribucion = "casos" +) # Mapa por municipio especifico -data_filtrada_mpio <- geo_filtro(data_event = data_estandar, - dpto = "Antioquia", - mpio = "Medellin") +data_filtrada_mpio <- geo_filtro( + data_event = data_estandar, + dpto = "Antioquia", + mpio = "Medellin" +) data_espacial_mpio <- agrupar_mpio(data_event = data_filtrada_mpio) -plot_map(data_agrupada = data_espacial_mpio, - col_codigos = "cod_mun_o", - col_distribucion = "casos", - dpto = "Antioquia", - mpio = "Medellin") +plot_map( + data_agrupada = data_espacial_mpio, + col_codigos = "cod_mun_o", + col_distribucion = "casos", + dpto = "Antioquia", + mpio = "Medellin" +) # Mapa con la incidencia por municipios de un departamento espec铆fico incidencia_dpto <- - calcular_incidencia_geo(data_agrupada = data_espacial_dpto) -plot_map(data_agrupada = incidencia_dpto, - col_codigos = "cod_mun_o", - col_distribucion = "incidencia") + calcular_incidencia_geo(data_agrupada = data_espacial_dpto) +plot_map( + data_agrupada = incidencia_dpto$data_incidencia, + col_codigos = "cod_mun_o", + col_distribucion = "incidencia" +) } } diff --git a/man/plot_mpios.Rd b/man/plot_mpios.Rd index 5edaf68e..88567737 100644 --- a/man/plot_mpios.Rd +++ b/man/plot_mpios.Rd @@ -10,7 +10,7 @@ plot_mpios(data_agrupada, col_mpios = NULL, fuente_data = NULL) \item{data_agrupada}{Un `data.frame` que contiene los datos de la enfermedad o evento agrupados por municipios.} -\item{col_mpios}{Un `character` (cadena de car谩cteres) con el nombre de +\item{col_mpios}{Un `character` (cadena de caracteres) con el nombre de la columna que contiene los municipios en los datos agrupados de la enfermedad o evento; su valor por defecto es `NULL`.} @@ -22,15 +22,18 @@ es `NULL`.} Un `plot` o gr谩fico de distribuci贸n de casos por municipios. } \description{ -Funci贸n que genera el gr谩fico de distribuci贸n de casos por +Funci贸n que genera un gr谩fico de distribuci贸n de casos por municipios. } \examples{ data(dengue2020) data_limpia <- limpiar_data_sivigila(dengue2020) data_limpia <- estandarizar_geo_cods(data_limpia) -data_agrupada <- agrupar_mpio(data_event = data_limpia, - dpto = "Antioquia") +data_agrupada <- agrupar_mpio( + data_event = data_limpia, + dpto = "Antioquia" +) plot_mpios(data_agrupada, - col_mpios = "municipio_ocurrencia") + col_mpios = "municipio_ocurrencia" +) } diff --git a/man/plot_per_etn.Rd b/man/plot_per_etn.Rd index d6cb6dcd..b1d803a2 100644 --- a/man/plot_per_etn.Rd +++ b/man/plot_per_etn.Rd @@ -2,8 +2,7 @@ % Please edit documentation in R/plotting.R \name{plot_per_etn} \alias{plot_per_etn} -\title{Generar gr谩fico de distribuci贸n de casos por la pertenencia -茅tnica} +\title{Generar gr谩fico de distribuci贸n de casos por pertenencia 茅tnica} \usage{ plot_per_etn( data_agrupada, @@ -14,13 +13,13 @@ plot_per_etn( } \arguments{ \item{data_agrupada}{Un `data.frame` que contiene los datos de la -enfermedad o evento agrupados por la pertenencia 茅tnica.} +enfermedad o evento agrupados por pertenencia 茅tnica.} -\item{col_etn}{Un `character` (cadena de car谩cteres) con el nombre de +\item{col_etn}{Un `character` (cadena de caracteres) con el nombre de la columna que contiene la pertenencia 茅tnica en los datos agrupados de la enfermedad o evento; su valor por defecto es `"per_etn"`.} -\item{porcentaje}{Un `boolean` (TRUE/FALSE) que indica si los datos +\item{porcentaje}{Un `logical` (`TRUE` o `FALSE`) que indica si los datos tienen porcentajes; su valor por defecto es `TRUE`.} \item{fuente_data}{Un `character` (cadena de caracteres) que contiene la @@ -28,12 +27,12 @@ leyenda o fuente de informaci贸n de los datos; su valor por defecto es `NULL`.} } \value{ -Un `plot` o gr谩fico de la distribuci贸n de casos por la pertenencia +Un `plot` o gr谩fico de la distribuci贸n de casos por pertenencia 茅tnica. } \description{ Funci贸n que genera el gr谩fico de la distribuci贸n de casos -por la pertenencia 茅tnica. +por pertenencia 茅tnica. } \examples{ \donttest{ @@ -41,6 +40,7 @@ data(dengue2020) data_limpia <- limpiar_data_sivigila(dengue2020) data_agrupada <- agrupar_per_etn(data_event = data_limpia) plot_per_etn(data_agrupada, - col_etn = "per_etn") + col_etn = "per_etn" +) } } diff --git a/man/plot_sex.Rd b/man/plot_sex.Rd index 1660699e..ead6d13c 100644 --- a/man/plot_sex.Rd +++ b/man/plot_sex.Rd @@ -24,7 +24,7 @@ evento; su valor por defecto es `"sexo"`.} nombre de la columna que tiene los valores de la distribuci贸n, por n煤mero de casos o incidencia; su valor por defecto es `"incidencia"`.} -\item{porcentaje}{Un `boolean` (TRUE/FALSE) que indica si los datos +\item{porcentaje}{Un `logical` (`TRUE` o `FALSE`) que indica si los datos tienen porcentajes; su valor por defecto es `TRUE`.} \item{fuente_data}{Un `character` (cadena de caracteres) que contiene la @@ -34,16 +34,20 @@ leyenda o fuente de informaci贸n de los datos; su valor por defecto es `NULL`.} Un `plot` o gr谩fico de distribuci贸n de casos por sexo. } \description{ -Funci贸n que genera el gr谩fico de distribuci贸n de casos por sexo. +Funci贸n que genera un gr谩fico de distribuci贸n de casos por sexo. } \examples{ \donttest{ data(dengue2020) data_limpia <- limpiar_data_sivigila(dengue2020) -data_agrupada <- agrupar_sex(data_event = data_limpia, - porcentaje = TRUE) -plot_sex(data_agrupada = data_agrupada, - col_sex = "sexo", - porcentaje = TRUE) +data_agrupada <- agrupar_sex( + data_event = data_limpia, + porcentaje = TRUE +) +plot_sex( + data_agrupada = data_agrupada, + col_sex = "sexo", + porcentaje = TRUE +) } } diff --git a/man/plot_sex_semanaepi.Rd b/man/plot_sex_semanaepi.Rd index 68740808..edd073d4 100644 --- a/man/plot_sex_semanaepi.Rd +++ b/man/plot_sex_semanaepi.Rd @@ -33,14 +33,16 @@ Un `plot` o gr谩fico de distribuci贸n de casos por sexo y semana epidemiol贸gica. } \description{ -Funci贸n que genera el gr谩fico de distribuci贸n de casos por sexo +Funci贸n que genera un gr谩fico de distribuci贸n de casos por sexo y semana epidemiol贸gica. } \examples{ data(dengue2020) data_limpia <- limpiar_data_sivigila(dengue2020) data_agrupada <- agrupar_sex_semanaepi(data_event = data_limpia) -plot_sex_semanaepi(data_agrupada = data_agrupada, - col_sex = "sexo", - col_semanaepi = "semana") +plot_sex_semanaepi( + data_agrupada = data_agrupada, + col_sex = "sexo", + col_semanaepi = "semana" +) } diff --git a/man/plot_tabla_incidencia_geo.Rd b/man/plot_tabla_incidencia_geo.Rd index 4716a5a4..d54167cc 100644 --- a/man/plot_tabla_incidencia_geo.Rd +++ b/man/plot_tabla_incidencia_geo.Rd @@ -10,7 +10,7 @@ plot_tabla_incidencia_geo(data_agrupada, col_geo = NULL) \item{data_agrupada}{Un `data.frame` que contiene los datos de la enfermedad o evento agrupados por departamento o municipio.} -\item{col_geo}{Un `character` (cadena de car谩cteres) con el nombre de +\item{col_geo}{Un `character` (cadena de caracteres) con el nombre de la columna que contiene los nombres de los departamentos o municipios en los datos agrupados de la enfermedad o evento; su valor por defecto es `NULL`.} @@ -20,7 +20,7 @@ Una `kable` (tabla gr谩fica) con la incidencia seg煤n distribuci贸n geogr谩fica. } \description{ -Funci贸n que genera la tabla con la incidencia seg煤n +Funci贸n que genera la tabla con la incidencia seg煤n la distribuci贸n geogr谩fica. } \examples{ @@ -28,9 +28,13 @@ distribuci贸n geogr谩fica. data(dengue2020) data_limpia <- limpiar_data_sivigila(data_event = dengue2020) data_agrupada <- agrupar_mpio(data_limpia, dpto = "Antioquia") -incidencia_mpios <- calcular_incidencia_geo(data_agrupada = - data_agrupada) -plot_tabla_incidencia_geo(data_agrupada = incidencia_mpios, - col_geo = "municipio_ocurrencia") +incidencia_mpios <- calcular_incidencia_geo( + data_agrupada = + data_agrupada +) +plot_tabla_incidencia_geo( + data_agrupada = incidencia_mpios$data_incidencia, + col_geo = "municipio_ocurrencia" +) } } diff --git a/man/plot_tabla_incidencia_sex.Rd b/man/plot_tabla_incidencia_sex.Rd index c1dba83e..b5a6d3b5 100644 --- a/man/plot_tabla_incidencia_sex.Rd +++ b/man/plot_tabla_incidencia_sex.Rd @@ -10,7 +10,7 @@ plot_tabla_incidencia_sex(data_agrupada, col_sex = "sexo") \item{data_agrupada}{Un `data.frame` que contiene los datos de la enfermedad o evento agrupados por departamento o municipio.} -\item{col_sex}{Un `character` (cadena de car谩cteres) con el nombre de +\item{col_sex}{Un `character` (cadena de caracteres) con el nombre de la columna que contiene el sexo en los datos agrupados de la enfermedad o evento; su valor por defecto es `"sexo"`.} } @@ -18,7 +18,7 @@ o evento; su valor por defecto es `"sexo"`.} Una `kable` (tabla gr谩fica) con la incidencia por sexo. } \description{ -Funci贸n que genera la tabla con la incidencia seg煤n por +Funci贸n que genera la tabla con la incidencia por sexo. } \examples{ @@ -27,9 +27,13 @@ data(dengue2020) data_limpia <- limpiar_data_sivigila(data_event = dengue2020) data_agrupada_sex <- agrupar_sex(data_limpia) incidencia_mpios <- - calcular_incidencia_sex(data_agrupada = data_agrupada_sex, - dpto = "Antioquia") - plot_tabla_incidencia_sex(data_agrupada = incidencia_mpios, - col_sex = "sexo") + calcular_incidencia_sex( + data_agrupada = data_agrupada_sex, + dpto = "Antioquia" + ) +plot_tabla_incidencia_sex( + data_agrupada = incidencia_mpios$data_incidencia, + col_sex = "sexo" +) } } diff --git a/man/plot_tabla_tipos_event.Rd b/man/plot_tabla_tipos_event.Rd index ecb16593..f4b8f32d 100644 --- a/man/plot_tabla_tipos_event.Rd +++ b/man/plot_tabla_tipos_event.Rd @@ -11,7 +11,7 @@ plot_tabla_tipos_event(data_agrupada, col_event = "nombre_evento") \item{data_agrupada}{Un `data.frame` que contiene los datos de la enfermedad o evento agrupados por tipo.} -\item{col_event}{Un `character` (cadena de car谩cteres) con el nombre de +\item{col_event}{Un `character` (cadena de caracteres) con el nombre de la columna que contiene el tipo de evento en los datos agrupados de la enfermedad o evento; su valor por defecto es `"nombre_evento"`.} } @@ -26,8 +26,11 @@ por tipo de enfermedad o evento. \examples{ data(dengue2020) data_limpia <- limpiar_data_sivigila(dengue2020) -data_agrupada <- agrupar_eventos(data_event = data_limpia, - col_event = "cod_eve") +data_agrupada <- agrupar_eventos( + data_event = data_limpia, + col_event = "cod_eve" +) plot_tabla_tipos_event(data_agrupada, - col_event = "nombre_evento") + col_event = "nombre_evento" +) } diff --git a/man/plot_tipo_caso.Rd b/man/plot_tipo_caso.Rd index a51a60c3..fc9c17d2 100644 --- a/man/plot_tipo_caso.Rd +++ b/man/plot_tipo_caso.Rd @@ -2,16 +2,16 @@ % Please edit documentation in R/plotting.R \name{plot_tipo_caso} \alias{plot_tipo_caso} -\title{Generar gr谩fico de distribuci贸n de casos por la clasificacion +\title{Generar gr谩fico de distribuci贸n de casos por la clasificaci贸n inicial del caso} \usage{ plot_tipo_caso(data_agrupada, col_tipo = "tip_cas", fuente_data = NULL) } \arguments{ \item{data_agrupada}{Un `data.frame` que contiene los datos de la -enfermedad o evento agrupados por la clasificaci贸n inicial de los casos.} +enfermedad o evento agrupados seg煤n la clasificaci贸n inicial de los casos.} -\item{col_tipo}{Un `character` (cadena de car谩cteres) con el nombre de +\item{col_tipo}{Un `character` (cadena de caracteres) con el nombre de la columna que contiene la clasificaci贸n inicial de los casos en los datos agrupados de la enfermedad o evento; su valor por defecto es `"tip_cas"`.} @@ -21,17 +21,18 @@ leyenda o fuente de informaci贸n de los datos; su valor por defecto es `NULL`.} } \value{ -Un `plot` o gr谩fico de distribuci贸n de casos por la clasificaci贸n -inicial. +Un `plot` o gr谩fico de distribuci贸n de casos seg煤n su +clasificaci贸n inicial. } \description{ -Funci贸n que genera el gr谩fico de distribuci贸n por la -clasificaci贸n inicial de los casos. +Funci贸n que genera un gr谩fico de distribuci贸n de casos +seg煤n su clasificaci贸n inicial. } \examples{ data(dengue2020) data_limpia <- limpiar_data_sivigila(dengue2020) data_agrupada <- agrupar_tipo_caso(data_event = data_limpia) plot_tipo_caso(data_agrupada, - col_tipo = "tip_cas") + col_tipo = "tip_cas" +) } diff --git a/man/plot_tipo_caso_years.Rd b/man/plot_tipo_caso_years.Rd index 522e80e3..1be8eaa0 100644 --- a/man/plot_tipo_caso_years.Rd +++ b/man/plot_tipo_caso_years.Rd @@ -2,7 +2,7 @@ % Please edit documentation in R/plotting.R \name{plot_tipo_caso_years} \alias{plot_tipo_caso_years} -\title{Generar gr谩fico de distribuci贸n de casos por la clasificacion +\title{Generar gr谩fico de distribuci贸n de casos por la clasificaci贸n inicial del caso y los a帽os seleccionados} \usage{ plot_tipo_caso_years( @@ -17,12 +17,12 @@ plot_tipo_caso_years( enfermedad o evento, agrupados por la clasificaci贸n inicial y los a帽os seleccionados.} -\item{col_tipo}{Un `character` (cadena de car谩cteres) con el nombre de +\item{col_tipo}{Un `character` (cadena de caracteres) con el nombre de la columna que contiene la clasificaci贸n inicial del caso en los datos agrupados de la enfermedad o evento; su valor por defecto es `"tip_cas"`.} -\item{col_year}{Un `character` (cadena de car谩cteres) con el nombre de +\item{col_year}{Un `character` (cadena de caracteres) con el nombre de la columna que contiene el a帽o en los datos agrupados de la enfermedad o evento; su valor por defecto es `"ano"`.} @@ -31,20 +31,25 @@ leyenda o fuente de informaci贸n de los datos; su valor por defecto es `NULL`.} } \value{ -Un `plot` o gr谩fico de distribuci贸n de casos por la clasificaci贸n +Un `plot` o gr谩fico de distribuci贸n de casos seg煤n su clasificaci贸n inicial y los a帽os seleccionados. } \description{ -Funci贸n que genera el gr谩fico por la clasificaci贸n inicial -de los casos y los a帽os seleccionados. +Funci贸n que genera un gr谩fico de distribuci贸n de casos +seg煤n su clasificaci贸n inicial y los a帽os seleccionados. } \examples{ data(dengue2020) data_limpia <- limpiar_data_sivigila(dengue2020) -data_agrupada <- agrupar_tipo_caso(data_event = data_limpia, - cols_tipo = c("tip_cas", - "ano")) +data_agrupada <- agrupar_tipo_caso( + data_event = data_limpia, + cols_tipo = c( + "tip_cas", + "ano" + ) +) plot_tipo_caso_years(data_agrupada, - col_tipo = "tip_cas", - col_year = "ano") + col_tipo = "tip_cas", + col_year = "ano" +) } diff --git a/man/plot_top_area_geo.Rd b/man/plot_top_area_geo.Rd index 95b783b5..bf4852ff 100644 --- a/man/plot_top_area_geo.Rd +++ b/man/plot_top_area_geo.Rd @@ -11,9 +11,9 @@ plot_top_area_geo(data_agrupada, col_area = "area", fuente_data = NULL) \item{data_agrupada}{Un `data.frame` que contiene los datos de la enfermedad o evento agrupados.} -\item{col_area}{Un `character` (cadena de car谩cteres) con el nombre de -la columna con el 谩rea geografica en los datos agrupados de la enfermedad -o evento; su valor por defecto es `"area"`.} +\item{col_area}{Un `character` (cadena de caracteres) con el nombre de +la columna que contiene el 谩rea geogr谩fica en los datos agrupados de la +enfermedad o evento; su valor por defecto es `"area"`.} \item{fuente_data}{Un `character` (cadena de caracteres) que contiene la leyenda o fuente de informaci贸n de los datos; su valor por defecto @@ -30,9 +30,12 @@ nivel departamental o municipal. \donttest{ data(dengue2020) data_limpia <- limpiar_data_sivigila(dengue2020) -data_agrupada <- agrupar_top_area_geo(data_event = data_limpia, - dpto = "Antioquia") +data_agrupada <- agrupar_top_area_geo( + data_event = data_limpia, + dpto = "Antioquia" +) plot_top_area_geo(data_agrupada, - col_area = "area") + col_area = "area" +) } } diff --git a/man/plot_years.Rd b/man/plot_years.Rd index 6b638ecd..64933f0f 100644 --- a/man/plot_years.Rd +++ b/man/plot_years.Rd @@ -10,9 +10,9 @@ plot_years(data_agrupada, col_year = "ano", fuente_data = NULL) \item{data_agrupada}{Un `data.frame` que contiene los datos de la enfermedad o evento agrupados por a帽o.} -\item{col_year}{Un `character` (cadena de car谩cteres) con el nombre de +\item{col_year}{Un `character` (cadena de caracteres) con el nombre de la columna que contiene los a帽os en los datos agrupados de la enfermedad -o evento por a帽o; su valor por defecto es `"ano"`.} +o evento; su valor por defecto es `"ano"`.} \item{fuente_data}{Un `character` (cadena de caracteres) que contiene la leyenda o fuente de informaci贸n de los datos; su valor por defecto @@ -22,20 +22,25 @@ es `NULL`.} Un `plot` o gr谩fico de distribuci贸n de casos por a帽o. } \description{ -Funci贸n que genera el gr谩fico de casos por a帽o. +Funci贸n que genera un gr谩fico de distribuci贸n de casos +por a帽o. } \examples{ data(dengue2020) data_limpia <- limpiar_data_sivigila(dengue2020) data_agrupada <- agrupar_years(data_event = data_limpia) plot_years(data_agrupada, - col_year = "ano") + col_year = "ano" +) \donttest{ -data_years <- import_data_event(nombre_event = "ZIKA", - years = c(2019, 2020)) +data_years <- import_data_event( + nombre_event = "CHAGAS", + years = c(2019, 2020), +) data_limpia <- limpiar_data_sivigila(data_years) data_agrupada <- agrupar_years(data_event = data_limpia) plot_years(data_agrupada, - col_year = "ano") + col_year = "ano" +) } } diff --git a/man/sivirep-package.Rd b/man/sivirep-package.Rd index c27464a1..d5cffe69 100644 --- a/man/sivirep-package.Rd +++ b/man/sivirep-package.Rd @@ -6,7 +6,7 @@ \alias{sivirep-package} \title{sivirep: Data Wrangling and Automated Reports from 'SIVIGILA' source} \description{ -Provides functions for data wrangling and automated reports from 'SIVIGILA' source. +Provides functions for data wrangling and automated reports from 'SIVIGILA' epidemiological surveillance system data from Colombia. } \seealso{ Useful links: @@ -18,11 +18,11 @@ Useful links: } \author{ -\strong{Maintainer}: Zulma M. Cucunub谩 \email{zulma.cucunuba@javeriana.edu.co} (\href{https://orcid.org/0000-0002-8165-3198}{ORCID}) [contributor] +\strong{Maintainer}: Geraldine G贸mez-Mill谩n \email{geralidine.gomez@javeriana.edu.co} (\href{https://orcid.org/0009-0007-8701-0568}{ORCID}) [contributor] Authors: \itemize{ - \item Geraldine G贸mez-Mill谩n \email{geralidine.gomez@javeriana.edu.co} (\href{https://orcid.org/0009-0007-8701-0568}{ORCID}) [contributor] + \item Zulma M. Cucunub谩 \email{zulma.cucunuba@javeriana.edu.co} (\href{https://orcid.org/0000-0002-8165-3198}{ORCID}) [contributor] \item Jennifer A. Mendez-Romero \email{jenniferk2@hotmail.com} (\href{https://orcid.org/0009-0001-6138-0225}{ORCID}) [contributor] \item Claudia Huguett-Arag贸n \email{chuguett@hotmail.com} (\href{https://orcid.org/0000-0002-9814-2386}{ORCID}) [contributor] } diff --git a/man/tema_sivirep.Rd b/man/tema_sivirep.Rd index 162fb906..056852d4 100644 --- a/man/tema_sivirep.Rd +++ b/man/tema_sivirep.Rd @@ -7,7 +7,7 @@ tema_sivirep() } \value{ -Un objecto tema de \pkg{ggplot2}. +Un objeto tema de \pkg{ggplot2}. } \description{ Tema \pkg{ggplot2} personalizado para los reportes diff --git a/tests/testthat/helper-state.R b/tests/testthat/helper-state.R new file mode 100644 index 00000000..4910faa6 --- /dev/null +++ b/tests/testthat/helper-state.R @@ -0,0 +1,26 @@ +# This helper ensures the package does not modify the session global state. As +# per CRAN policy, packages should not interfere with the user's session state. +# If global settings need to be modified, they should be restored to their +# original values on exit. This can be achieved with the `on.exit()` base +# function, or more conveniently with the `withr` package. +# We add a test on R >= 4.0.0 because some functions such as +# `globalCallingHandlers()` did not exist before. +if (getRversion() >= "4.0.0") { + testthat::set_state_inspector(function() { + list( + attached = search(), + connections = getAllConnections(), + cwd = getwd(), + envvars = Sys.getenv(), + handlers = globalCallingHandlers(), + libpaths = .libPaths(), + locale = Sys.getlocale(), + options = options(), + par = par(), + packages = .packages(all.available = TRUE), + sink = sink.number(), + timezone = Sys.timezone(), + NULL + ) + }) +} diff --git a/tests/testthat/setup-options.R b/tests/testthat/setup-options.R new file mode 100644 index 00000000..4ca3f1c0 --- /dev/null +++ b/tests/testthat/setup-options.R @@ -0,0 +1,7 @@ +# We want to flag partial matching as part of our testing & continuous +# integration process because it makes code more brittle. +options( + warnPartialMatchAttr = TRUE, + warnPartialMatchDollar = TRUE, + warnPartialMatchArgs = TRUE +) diff --git a/tests/testthat/test-area_geo.R b/tests/testthat/test-area_geo.R index fc395a77..7cc3e2a6 100644 --- a/tests/testthat/test-area_geo.R +++ b/tests/testthat/test-area_geo.R @@ -2,49 +2,63 @@ data(dengue2020) data_limpia <- limpiar_data_sivigila(dengue2020) test_that("`area_geo` funciona correctamente", { - data_agrupada <- agrupar_area_geo(data_event = data_limpia) - + expect_s3_class(data_agrupada, "data.frame") expect_true("cod_eve" %in% names(data_agrupada)) expect_true("nombre_evento" %in% names(data_agrupada)) expect_true("ano" %in% names(data_agrupada)) expect_true("area" %in% names(data_agrupada)) expect_true("casos" %in% names(data_agrupada)) - - expect_equal(data_agrupada[["casos"]], c(36, 5, 4)) - + + expect_equal(data_agrupada[["casos"]], c(37, 5, 5)) + plot <- plot_area_geo(data_agrupada) expect_s3_class(plot, "ggplot") - }) test_that("`area_geo` maneja errores correctamente", { - - expect_error(agrupar_area_geo(data_event = list(a = 1, b = 2)), - "El parametro data_event debe ser un data.frame") - - expect_error(agrupar_area_geo(data_event = data_limpia, - col_area = TRUE), - "El parametro col_area debe ser una cadena de caracteres") - - expect_error(agrupar_area_geo(data_event = data_limpia, - porcentaje = "boolean"), - "El parametro porcentaje debe ser un booleano") - - expect_error(plot_area_geo(data_agrupada = list(a = 1, b = 2)), - "El parametro data_agrupada debe ser un data.frame") - - expect_error(plot_area_geo(data_agrupada = data_limpia, - col_area = 1), - "El parametro col_area debe ser una cadena de caracteres") + expect_error( + agrupar_area_geo(data_event = list(a = 1, b = 2)), + "El parametro data_event debe ser un data.frame" + ) + + expect_error( + agrupar_area_geo( + data_event = data_limpia, + col_area = TRUE + ), + "El parametro col_area debe ser una cadena de caracteres" + ) + + expect_error( + agrupar_area_geo( + data_event = data_limpia, + porcentaje = "boolean" + ), + "El parametro porcentaje debe ser un booleano" + ) + + expect_error( + plot_area_geo(data_agrupada = list(a = 1, b = 2)), + "El parametro data_agrupada debe ser un data.frame" + ) + + expect_error( + plot_area_geo( + data_agrupada = data_limpia, + col_area = 1 + ), + "El parametro col_area debe ser una cadena de caracteres" + ) }) test_that("`top_area_geo` funciona correctamente", { - - data_agrupada <- agrupar_top_area_geo(data_event = data_limpia, - dpto = "Antioquia") - + data_agrupada <- agrupar_top_area_geo( + data_event = data_limpia, + dpto = "Antioquia" + ) + expect_s3_class(data_agrupada, "data.frame") expect_true("cod_eve" %in% names(data_agrupada)) expect_true("nombre_evento" %in% names(data_agrupada)) @@ -55,31 +69,45 @@ test_that("`top_area_geo` funciona correctamente", { expect_true("municipio_ocurrencia" %in% names(data_agrupada)) expect_true("cod_mun_o" %in% names(data_agrupada)) expect_true("casos" %in% names(data_agrupada)) - + expect_equal(data_agrupada[["casos"]], c(3, rep(1, 9))) - + plot <- plot_top_area_geo(data_agrupada) expect_s3_class(plot, "ggplot") - }) test_that("`top_area_geo` maneja errores correctamente", { - - expect_error(agrupar_top_area_geo(data_event = list(a = 1, b = 2)), - "El parametro data_event debe ser un data.frame") - - expect_error(agrupar_top_area_geo(data_event = data_limpia, - col_area = TRUE), - "El parametro col_area debe ser una cadena de caracteres") - - expect_error(agrupar_top_area_geo(data_event = data_limpia, - porcentaje = "boolean"), - "El parametro porcentaje debe ser un booleano") - - expect_error(plot_top_area_geo(data_agrupada = list(a = 1, b = 2)), - "El parametro data_agrupada debe ser un data.frame") - - expect_error(plot_top_area_geo(data_agrupada = data_limpia, - col_area = 1), - "El parametro col_area debe ser una cadena de caracteres") + expect_error( + agrupar_top_area_geo(data_event = list(a = 1, b = 2)), + "El parametro data_event debe ser un data.frame" + ) + + expect_error( + agrupar_top_area_geo( + data_event = data_limpia, + col_area = TRUE + ), + "El parametro col_area debe ser una cadena de caracteres" + ) + + expect_error( + agrupar_top_area_geo( + data_event = data_limpia, + porcentaje = "boolean" + ), + "El parametro porcentaje debe ser un booleano" + ) + + expect_error( + plot_top_area_geo(data_agrupada = list(a = 1, b = 2)), + "El parametro data_agrupada debe ser un data.frame" + ) + + expect_error( + plot_top_area_geo( + data_agrupada = data_limpia, + col_area = 1 + ), + "El parametro col_area debe ser una cadena de caracteres" + ) }) diff --git a/tests/testthat/test-dpto.R b/tests/testthat/test-dpto.R index 0e041e33..c7b72568 100644 --- a/tests/testthat/test-dpto.R +++ b/tests/testthat/test-dpto.R @@ -3,7 +3,6 @@ data_limpia <- limpiar_data_sivigila(dengue2020) data_limpia <- estandarizar_geo_cods(data_limpia) test_that("`dpto` funciona correctamente", { - data_agrupada <- agrupar_dpto(data_event = data_limpia) expect_s3_class(data_agrupada, "data.frame") @@ -13,32 +12,48 @@ test_that("`dpto` funciona correctamente", { expect_true("departamento_ocurrencia" %in% names(data_agrupada)) expect_true("cod_dpto_o" %in% names(data_agrupada)) expect_true("casos" %in% names(data_agrupada)) - - expect_equal(data_agrupada[["casos"]], - c(1, 12, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1)) - + + expect_equal( + data_agrupada[["casos"]], + c( + 1, 12, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 2 + ) + ) + plot <- plot_dptos(data_agrupada) expect_s3_class(plot, "ggplot") - }) test_that("`dpto` maneja errores correctamente", { - - expect_error(agrupar_dpto(data_event = list(a = 1, b = 2)), - "El parametro data_event debe ser un data.frame") - - expect_error(agrupar_dpto(data_event = data_limpia, col_dpto = TRUE), - "El parametro col_dpto debe ser una cadena de caracteres") - - expect_error(agrupar_dpto(data_event = data_limpia, - porcentaje = "boolean"), - "El parametro porcentaje debe ser un booleano") - - expect_error(plot_dptos(data_agrupada = list(a = 1, b = 2)), - "El parametro data_agrupada debe ser un data.frame") - - expect_error(plot_dptos(data_agrupada = data_limpia, - col_dptos = 1), - "El parametro col_dptos debe ser una cadena de caracteres") + expect_error( + agrupar_dpto(data_event = list(a = 1, b = 2)), + "El parametro data_event debe ser un data.frame" + ) + + expect_error( + agrupar_dpto(data_event = data_limpia, col_dpto = TRUE), + "El parametro col_dpto debe ser una cadena de caracteres" + ) + + expect_error( + agrupar_dpto( + data_event = data_limpia, + porcentaje = "boolean" + ), + "El parametro porcentaje debe ser un booleano" + ) + + expect_error( + plot_dptos(data_agrupada = list(a = 1, b = 2)), + "El parametro data_agrupada debe ser un data.frame" + ) + + expect_error( + plot_dptos( + data_agrupada = data_limpia, + col_dptos = 1 + ), + "El parametro col_dptos debe ser una cadena de caracteres" + ) }) diff --git a/tests/testthat/test-edad.R b/tests/testthat/test-edad.R index 04392645..68e8dae0 100644 --- a/tests/testthat/test-edad.R +++ b/tests/testthat/test-edad.R @@ -2,88 +2,130 @@ data(dengue2020) data_limpia <- limpiar_data_sivigila(dengue2020) test_that("`edad` funciona correctamente", { - - data_agrupada <- agrupar_edad(data_event = data_limpia, - porcentaje = TRUE) - + data_agrupada <- agrupar_edad( + data_event = data_limpia, + porcentaje = TRUE + ) + expect_s3_class(data_agrupada, "data.frame") expect_true("edad" %in% names(data_agrupada)) expect_true("casos" %in% names(data_agrupada)) expect_true("porcentaje" %in% names(data_agrupada)) - - expect_equal(data_agrupada[["casos"]], - c(7, 15, 11, 4, 4, 1, 2, 1)) - + + expect_equal( + data_agrupada[["casos"]], + c(7, 16, 11, 5, 4, 1, 2, 1) + ) + plot <- plot_edad(data_agrupada) expect_s3_class(plot, "ggplot") - }) test_that("`edad` maneja errores correctamente", { - - expect_error(agrupar_edad(data_event = list(a = 1, b = 2)), - "El parametro data_event debe ser un data.frame") - - expect_error(agrupar_edad(data_event = data_limpia, - col_edad = TRUE), - "El parametro col_edad debe ser una cadena de caracteres") - - expect_error(agrupar_edad(data_event = data_limpia, - porcentaje = "boolean"), - "El parametro porcentaje debe ser un booleano") - - expect_error(plot_edad(data_agrupada = list(a = 1, b = 2)), - "El parametro data_agrupada debe ser un data.frame") - - expect_error(plot_edad(data_agrupada = data_limpia, - col_edad = 1), - "El parametro col_edad debe ser una cadena de caracteres") + expect_error( + agrupar_edad(data_event = list(a = 1, b = 2)), + "El parametro data_event debe ser un data.frame" + ) + + expect_error( + agrupar_edad( + data_event = data_limpia, + col_edad = TRUE + ), + "El parametro col_edad debe ser una cadena de caracteres" + ) + + expect_error( + agrupar_edad( + data_event = data_limpia, + porcentaje = "boolean" + ), + "El parametro porcentaje debe ser un booleano" + ) + + expect_error( + plot_edad(data_agrupada = list(a = 1, b = 2)), + "El parametro data_agrupada debe ser un data.frame" + ) + + expect_error( + plot_edad( + data_agrupada = data_limpia, + col_edad = 1 + ), + "El parametro col_edad debe ser una cadena de caracteres" + ) }) test_that("`edad_sex` funciona correctamente", { - - data_agrupada <- agrupar_edad_sex(data_event = data_limpia, - porcentaje = TRUE) - + data_agrupada <- agrupar_edad_sex( + data_event = data_limpia, + porcentaje = TRUE + ) + expect_s3_class(data_agrupada, "data.frame") expect_true("edad" %in% names(data_agrupada)) expect_true("sexo" %in% names(data_agrupada)) expect_true("casos" %in% names(data_agrupada)) expect_true("porcentaje" %in% names(data_agrupada)) - - expect_equal(data_agrupada[["casos"]], - c(4, 3, 6, 9, 4, 7, 3, 1, 1, 3, 1, 1, 1, 1)) - + + expect_equal( + data_agrupada[["casos"]], + c(4, 3, 6, 10, 4, 7, 4, 1, 1, 3, 1, 1, 1, 1) + ) + plot <- plot_edad_sex(data_agrupada) expect_s3_class(plot, "ggplot") - }) test_that("`edad_sex` maneja errores correctamente", { - - expect_error(agrupar_edad_sex(data_event = list(a = 1, b = 2)), - "El parametro data_event debe ser un data.frame") - - expect_error(agrupar_edad_sex(data_event = data_limpia, - col_edad = TRUE), - "El parametro col_edad debe ser una cadena de caracteres") - - expect_error(agrupar_edad_sex(data_event = data_limpia, - col_sex = TRUE), - "El parametro col_sex debe ser una cadena de caracteres") - - expect_error(agrupar_edad_sex(data_event = data_limpia, - porcentaje = "boolean"), - "El parametro porcentaje debe ser un booleano") - - expect_error(plot_edad_sex(data_agrupada = list(a = 1, b = 2)), - "El parametro data_agrupada debe ser un data.frame") - - expect_error(plot_edad_sex(data_agrupada = data_limpia, - col_edad = 1), - "El parametro col_edad debe ser una cadena de caracteres") - - expect_error(plot_edad_sex(data_agrupada = data_limpia, - col_edad = "edad", col_sex = 1), - "El parametro col_sex debe ser una cadena de caracteres") + expect_error( + agrupar_edad_sex(data_event = list(a = 1, b = 2)), + "El parametro data_event debe ser un data.frame" + ) + + expect_error( + agrupar_edad_sex( + data_event = data_limpia, + col_edad = TRUE + ), + "El parametro col_edad debe ser una cadena de caracteres" + ) + + expect_error( + agrupar_edad_sex( + data_event = data_limpia, + col_sex = TRUE + ), + "El parametro col_sex debe ser una cadena de caracteres" + ) + + expect_error( + agrupar_edad_sex( + data_event = data_limpia, + porcentaje = "boolean" + ), + "El parametro porcentaje debe ser un booleano" + ) + + expect_error( + plot_edad_sex(data_agrupada = list(a = 1, b = 2)), + "El parametro data_agrupada debe ser un data.frame" + ) + + expect_error( + plot_edad_sex( + data_agrupada = data_limpia, + col_edad = 1 + ), + "El parametro col_edad debe ser una cadena de caracteres" + ) + + expect_error( + plot_edad_sex( + data_agrupada = data_limpia, + col_edad = "edad", col_sex = 1 + ), + "El parametro col_sex debe ser una cadena de caracteres" + ) }) diff --git a/tests/testthat/test-fecha_inisintomas.R b/tests/testthat/test-fecha_inisintomas.R index ce257cae..9dd7aed8 100644 --- a/tests/testthat/test-fecha_inisintomas.R +++ b/tests/testthat/test-fecha_inisintomas.R @@ -2,9 +2,8 @@ data(dengue2020) data_limpia <- limpiar_data_sivigila(dengue2020) test_that("`fecha_inisintomas` funciona correctamente", { - data_agrupada <- agrupar_fecha_inisintomas(data_event = data_limpia) - + expect_s3_class(data_agrupada, "data.frame") expect_true("cod_eve" %in% names(data_agrupada)) expect_true("nombre_evento" %in% names(data_agrupada)) @@ -12,29 +11,41 @@ test_that("`fecha_inisintomas` funciona correctamente", { expect_true("ini_sin" %in% names(data_agrupada)) expect_true("semana" %in% names(data_agrupada)) expect_true("casos" %in% names(data_agrupada)) - - expect_equal(data_agrupada[["casos"]], - c(1, 1, 7, 2, 4, 6, 6, 2, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)) - + + expect_equal( + data_agrupada[["casos"]], + c(1, 1, 1, 7, 2, 4, 6, 6, 3, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) + ) + plot <- plot_fecha_inisintomas(data_agrupada = data_agrupada) expect_s3_class(plot, "ggplot") - }) test_that("`fecha_inisintomas` maneja errores correctamente", { - - expect_error(agrupar_fecha_inisintomas(data_event = list(a = 1, b = 2)), - "El parametro data_event debe ser un data.frame") - - expect_error(agrupar_fecha_inisintomas(data_event = data_limpia, - col_fecha = TRUE), - "El parametro col_fecha debe ser una cadena de caracteres") - - expect_error(plot_fecha_inisintomas(data_agrupada = list(a = 1, b = 2)), - "El parametro data_agrupada debe ser un data.frame") - - expect_error(plot_fecha_inisintomas(data_agrupada = - data.frame(semana = 1, casos = 1), - col_fecha = 1), - "El parametro col_fecha debe ser una cadena de caracteres") + expect_error( + agrupar_fecha_inisintomas(data_event = list(a = 1, b = 2)), + "El parametro data_event debe ser un data.frame" + ) + + expect_error( + agrupar_fecha_inisintomas( + data_event = data_limpia, + col_fecha = TRUE + ), + "El parametro col_fecha debe ser una cadena de caracteres" + ) + + expect_error( + plot_fecha_inisintomas(data_agrupada = list(a = 1, b = 2)), + "El parametro data_agrupada debe ser un data.frame" + ) + + expect_error( + plot_fecha_inisintomas( + data_agrupada = + data.frame(semana = 1, casos = 1), + col_fecha = 1 + ), + "El parametro col_fecha debe ser una cadena de caracteres" + ) }) diff --git a/tests/testthat/test-import.R b/tests/testthat/test-import.R index 855e009e..8cc7806b 100644 --- a/tests/testthat/test-import.R +++ b/tests/testthat/test-import.R @@ -1,27 +1,25 @@ test_that("`import_geo_cods` funciona correctamente", { - geo_codes <- import_geo_cods() - + expect_s3_class(geo_codes, "data.frame") expect_true("codigo_departamento" %in% names(geo_codes)) expect_true("nombre_departamento" %in% names(geo_codes)) expect_true("codigo_municipio" %in% names(geo_codes)) expect_true("codigo_municipio" %in% names(geo_codes)) expect_true("tipo_municipio_isla_area_no_municipalizada" %in% names(geo_codes)) - }) test_that("`import_geo_cods` maneja errores correctamente", { - - expect_error(import_geo_cods(descargar = 1), - "El parametro descargar debe ser un booleano") + expect_error( + import_geo_cods(descargar = 1), + "El parametro descargar debe ser un booleano" + ) }) test_that("`list_events` funciona correctamente", { - events <- list_events() - + expect_s3_class(events, "data.frame") expect_true("enfermedad" %in% names(events)) expect_true("aa" %in% names(events)) -}) \ No newline at end of file +}) diff --git a/tests/testthat/test-incidencia.R b/tests/testthat/test-incidencia.R index 4bc4fe8f..8b8ef073 100644 --- a/tests/testthat/test-incidencia.R +++ b/tests/testthat/test-incidencia.R @@ -2,13 +2,16 @@ data(dengue2020) data_limpia <- limpiar_data_sivigila(dengue2020) test_that("`incidencia_geo` funciona correctamente", { - - data_agrupada <- agrupar_mpio(data_event = data_limpia, - dpto = "Antioquia") - incidencia_mpios <- calcular_incidencia_geo(data_agrupada = - data_agrupada, - year = 2020) - + data_agrupada <- agrupar_mpio( + data_event = data_limpia, + dpto = "Antioquia" + ) + incidencia_mpios <- calcular_incidencia_geo( + data_agrupada = + data_agrupada, + year = 2020 + )$data_incidencia + expect_s3_class(incidencia_mpios, "data.frame") expect_true("cod_eve" %in% names(data_agrupada)) expect_true("nombre_evento" %in% names(data_agrupada)) @@ -19,55 +22,66 @@ test_that("`incidencia_geo` funciona correctamente", { expect_true("cod_mun_o" %in% names(incidencia_mpios)) expect_true("casos" %in% names(incidencia_mpios)) expect_true("incidencia" %in% names(incidencia_mpios)) - + expect_equal(data_agrupada[["casos"]], incidencia_mpios[["casos"]]) - expect_equal(incidencia_mpios[["incidencia"]], - c(0.16, 0.78, 1.48, 2.27, 5.27, 4.77, 2.54, 9.33, 0.77)) - - tabla <- plot_tabla_incidencia_geo(data_agrupada = incidencia_mpios, - col_geo = "municipio_ocurrencia") - + expect_equal( + incidencia_mpios[["incidencia"]], + c(0.16, 0.78, 1.48, 2.27, 5.27, 4.77, 2.54, 9.33, 0.77) + ) + + tabla <- plot_tabla_incidencia_geo( + data_agrupada = incidencia_mpios, + col_geo = "municipio_ocurrencia" + ) + expect_s3_class(tabla, "kableExtra") - }) test_that("`incidencia_geo` maneja errores correctamente", { - - expect_error(calcular_incidencia_geo(data_agrupada = list(a = 1, b = 2)), - "El parametro data_agrupada debe ser un data.frame") - - expect_error(plot_tabla_incidencia_geo(list(a = 1, b = 2)), - "El parametro data_agrupada debe ser un data.frame") + expect_error( + calcular_incidencia_geo(data_agrupada = list(a = 1, b = 2)), + "El parametro data_agrupada debe ser un data.frame" + ) + + expect_error( + plot_tabla_incidencia_geo(list(a = 1, b = 2)), + "El parametro data_agrupada debe ser un data.frame" + ) }) test_that("`incidencia_sex` funciona correctamente", { - data_agrupada <- agrupar_sex(data_event = data_limpia) incidencia_sex <- - calcular_incidencia_sex(data_agrupada = data_agrupada, - dpto = "Antioquia") - + calcular_incidencia_sex( + data_agrupada = data_agrupada, + dpto = "Antioquia" + )$data_incidencia + expect_s3_class(incidencia_sex, "data.frame") expect_true("cod_eve" %in% names(data_agrupada)) expect_true("nombre_evento" %in% names(incidencia_sex)) expect_true("sexo" %in% names(incidencia_sex)) expect_true("casos" %in% names(incidencia_sex)) expect_true("incidencia" %in% names(incidencia_sex)) - + expect_equal(data_agrupada[["casos"]], incidencia_sex[["casos"]]) - expect_equal(incidencia_sex[["incidencia"]], - c(0.61, 0.75)) - + expect_equal( + incidencia_sex[["incidencia"]], + c(0.64, 0.78) + ) + tabla <- plot_tabla_incidencia_sex(data_agrupada = incidencia_sex) expect_s3_class(tabla, "kableExtra") - }) test_that("`incidencia_sex` maneja errores correctamente", { - - expect_error(calcular_incidencia_sex(data_agrupada = list(a = 1, b = 2)), - "El parametro data_agrupada debe ser un data.frame") - - expect_error(plot_tabla_incidencia_sex(list(a = 1, b = 2)), - "El parametro data_agrupada debe ser un data.frame") + expect_error( + calcular_incidencia_sex(data_agrupada = list(a = 1, b = 2)), + "El parametro data_agrupada debe ser un data.frame" + ) + + expect_error( + plot_tabla_incidencia_sex(list(a = 1, b = 2)), + "El parametro data_agrupada debe ser un data.frame" + ) }) diff --git a/tests/testthat/test-map.R b/tests/testthat/test-map.R index 951b2a53..16c706aa 100644 --- a/tests/testthat/test-map.R +++ b/tests/testthat/test-map.R @@ -1,19 +1,24 @@ data(dengue2020) data_limpia <- limpiar_data_sivigila(dengue2020) data_estandar <- estandarizar_geo_cods(data_limpia) +geo_ocurrencia <- + obtener_tip_ocurren_geo(nombre_event = "Dengue") test_that("`mapa` maneja errores correctamente", { - - expect_error(plot_map(data_agrupada = list(a = 1, b = 2)), - "El parametro data_agrupada debe ser un data.frame") - expect_error(plot_map(data_agrupada = data_limpia, fuente_data = 1), - "El parametro fuente_data debe ser un cadena de caracteres") + expect_error( + plot_map(data_agrupada = list(a = 1, b = 2)), + "El parametro data_agrupada debe ser un data.frame" + ) + expect_error( + plot_map(data_agrupada = data_limpia, fuente_data = 1), + "El parametro fuente_data debe ser un cadena de caracteres" + ) }) test_that("`mapa_colombia` funciona correctamente", { - - data_espacial <- agrupar_dpto(data_event = data_estandar) - + data_espacial <- agrupar_dpto(data_event = data_estandar, + geo_ocurrencia[1:4]) + expect_s3_class(data_espacial, "data.frame") expect_true("cod_eve" %in% names(data_espacial)) expect_true("nombre_evento" %in% names(data_espacial)) @@ -21,19 +26,22 @@ test_that("`mapa_colombia` funciona correctamente", { expect_true("cod_dpto_o" %in% names(data_espacial)) expect_true("departamento_ocurrencia" %in% names(data_espacial)) expect_true("casos" %in% names(data_espacial)) - - map <- plot_map(data_agrupada = data_espacial, - col_distribucion = "casos") - + + map <- plot_map( + data_agrupada = data_espacial, + col_distribucion = "casos" + ) + expect_s3_class(map, "ggplot") }) test_that("`mapa_dpto` funciona correctamente", { - - data_filtrada_dpto <- geo_filtro(data_event = data_estandar, - dpto = "Cundinamarca") + data_filtrada_dpto <- geo_filtro( + data_event = data_estandar, + dpto = "Cundinamarca" + ) data_espacial_dpto <- agrupar_mpio(data_event = data_filtrada_dpto) - + expect_s3_class(data_espacial_dpto, "data.frame") expect_true("cod_eve" %in% names(data_espacial_dpto)) expect_true("nombre_evento" %in% names(data_espacial_dpto)) @@ -43,20 +51,22 @@ test_that("`mapa_dpto` funciona correctamente", { expect_true("cod_mun_o" %in% names(data_espacial_dpto)) expect_true("municipio_ocurrencia" %in% names(data_espacial_dpto)) expect_true("casos" %in% names(data_espacial_dpto)) - - map <- plot_map(data_agrupada = data_espacial_dpto, - col_codigos = "cod_mun_o", - col_distribucion = "casos") - + + map <- plot_map( + data_agrupada = data_espacial_dpto, + col_codigos = "cod_mun_o", + col_distribucion = "casos" + ) + expect_s3_class(map, "ggplot") - }) test_that("`mapa_mpio` funciona correctamente", { - - data_filtrada_mpio <- geo_filtro(data_event = data_estandar, - dpto = "Antioquia", - mpio = "Medellin") + data_filtrada_mpio <- geo_filtro( + data_event = data_estandar, + dpto = "Antioquia", + mpio = "Medellin" + ) data_espacial_mpio <- agrupar_mpio(data_event = data_filtrada_mpio) expect_s3_class(data_espacial_mpio, "data.frame") @@ -68,21 +78,24 @@ test_that("`mapa_mpio` funciona correctamente", { expect_true("cod_mun_o" %in% names(data_espacial_mpio)) expect_true("municipio_ocurrencia" %in% names(data_espacial_mpio)) expect_true("casos" %in% names(data_espacial_mpio)) - - map <- plot_map(data_agrupada = data_espacial_mpio, - col_distribucion = "casos", - dpto = "Antioquia", - mpio = "Envigado") - + + map <- plot_map( + data_agrupada = data_espacial_mpio, + col_distribucion = "casos", + dpto = "Antioquia", + mpio = "Envigado" + ) + expect_s3_class(map, "ggplot") - }) test_that("`mapa_indicidencia_colombia` funciona correctamente", { - - data_agrupada <- agrupar_dpto(data_event = data_estandar) - incidencia_dptos <- calcular_incidencia_geo(data_agrupada = - data_agrupada) + data_agrupada <- agrupar_dpto(data_event = data_estandar, + geo_ocurrencia[1:4]) + incidencia_dptos <- calcular_incidencia_geo( + data_agrupada = + data_agrupada + )$data_incidencia expect_s3_class(incidencia_dptos, "data.frame") expect_true("cod_eve" %in% names(incidencia_dptos)) expect_true("nombre_evento" %in% names(incidencia_dptos)) @@ -93,15 +106,17 @@ test_that("`mapa_indicidencia_colombia` funciona correctamente", { map <- plot_map(data_agrupada = incidencia_dptos) expect_s3_class(map, "ggplot") - }) test_that("`mapa_indicidencia_dpto` funciona correctamente", { - - data_agrupada <- agrupar_mpio(data_event = data_estandar, - dpto = "Antioquia") - incidencia_dpto <- calcular_incidencia_geo(data_agrupada = - data_agrupada) + data_agrupada <- agrupar_mpio( + data_event = data_estandar, + dpto = "Antioquia" + ) + incidencia_dpto <- calcular_incidencia_geo( + data_agrupada = + data_agrupada + )$data_incidencia expect_s3_class(incidencia_dpto, "data.frame") expect_true("nombre_evento" %in% names(incidencia_dpto)) expect_true("cod_dpto_o" %in% names(incidencia_dpto)) @@ -110,21 +125,25 @@ test_that("`mapa_indicidencia_dpto` funciona correctamente", { expect_true("municipio_ocurrencia" %in% names(incidencia_dpto)) expect_true("casos" %in% names(incidencia_dpto)) expect_true("incidencia" %in% names(incidencia_dpto)) - + map <- plot_map(data_agrupada = incidencia_dpto) expect_s3_class(map, "ggplot") - }) test_that("`mapa_indicidencia_mpio` funciona correctamente", { - - data_filtrada_mpio <- geo_filtro(data_event = data_estandar, - dpto = "Antioquia", - mpio = "Medellin") - data_agrupada <- agrupar_mpio(data_event = data_filtrada_mpio, - dpto = "Antioquia") - incidencia_mpio <- calcular_incidencia_geo(data_agrupada = - data_agrupada) + data_filtrada_mpio <- geo_filtro( + data_event = data_estandar, + dpto = "Antioquia", + mpio = "Medellin" + ) + data_agrupada <- agrupar_mpio( + data_event = data_filtrada_mpio, + dpto = "Antioquia" + ) + incidencia_mpio <- calcular_incidencia_geo( + data_agrupada = + data_agrupada + )$data_incidencia expect_s3_class(incidencia_mpio, "data.frame") expect_true("nombre_evento" %in% names(incidencia_mpio)) expect_true("cod_dpto_o" %in% names(incidencia_mpio)) @@ -133,8 +152,7 @@ test_that("`mapa_indicidencia_mpio` funciona correctamente", { expect_true("municipio_ocurrencia" %in% names(incidencia_mpio)) expect_true("casos" %in% names(incidencia_mpio)) expect_true("incidencia" %in% names(incidencia_mpio)) - + map <- plot_map(data_agrupada = incidencia_mpio) expect_s3_class(map, "ggplot") - }) diff --git a/tests/testthat/test-mpio.R b/tests/testthat/test-mpio.R index 02280d90..daba373d 100644 --- a/tests/testthat/test-mpio.R +++ b/tests/testthat/test-mpio.R @@ -3,10 +3,11 @@ data_limpia <- limpiar_data_sivigila(dengue2020) data_limpia <- estandarizar_geo_cods(data_limpia) test_that("`mpio` funciona correctamente", { - - data_agrupada <- agrupar_mpio(data_event = data_limpia, - dpto = "Antioquia") - + data_agrupada <- agrupar_mpio( + data_event = data_limpia, + dpto = "Antioquia" + ) + expect_s3_class(data_agrupada, "data.frame") expect_true("cod_eve" %in% names(data_agrupada)) expect_true("nombre_evento" %in% names(data_agrupada)) @@ -16,31 +17,45 @@ test_that("`mpio` funciona correctamente", { expect_true("cod_mun_o" %in% names(data_agrupada)) expect_true("municipio_ocurrencia" %in% names(data_agrupada)) expect_true("casos" %in% names(data_agrupada)) - - expect_equal(data_agrupada[["casos"]], - c(4, 1, 1, 1, 1, 1, 1, 1, 1)) - + + expect_equal( + data_agrupada[["casos"]], + c(4, 1, 1, 1, 1, 1, 1, 1, 1) + ) + plot <- plot_mpios(data_agrupada) expect_s3_class(plot, "ggplot") - }) test_that("`mpio` maneja errores correctamente", { - - expect_error(agrupar_mpio(data_event = list(a = 1, b = 2)), - "El parametro data_event debe ser un data.frame") - - expect_error(agrupar_mpio(data_event = data_limpia, col_mpio = TRUE), - "El parametro col_mpio debe ser una cadena de caracteres") - - expect_error(agrupar_mpio(data_event = data_limpia, - porcentaje = "boolean"), - "El parametro porcentaje debe ser un booleano") - - expect_error(plot_mpios(data_agrupada = list(a = 1, b = 2)), - "El parametro data_agrupada debe ser un data.frame") - - expect_error(plot_mpios(data_agrupada = data_limpia, - col_mpios = 1), - "El parametro col_mpios debe ser una cadena de caracteres") + expect_error( + agrupar_mpio(data_event = list(a = 1, b = 2)), + "El parametro data_event debe ser un data.frame" + ) + + expect_error( + agrupar_mpio(data_event = data_limpia, col_mpio = TRUE), + "El parametro col_mpio debe ser una cadena de caracteres" + ) + + expect_error( + agrupar_mpio( + data_event = data_limpia, + porcentaje = "boolean" + ), + "El parametro porcentaje debe ser un booleano" + ) + + expect_error( + plot_mpios(data_agrupada = list(a = 1, b = 2)), + "El parametro data_agrupada debe ser un data.frame" + ) + + expect_error( + plot_mpios( + data_agrupada = data_limpia, + col_mpios = 1 + ), + "El parametro col_mpios debe ser una cadena de caracteres" + ) }) diff --git a/tests/testthat/test-per_etn.R b/tests/testthat/test-per_etn.R index b13c82a3..9be14e74 100644 --- a/tests/testthat/test-per_etn.R +++ b/tests/testthat/test-per_etn.R @@ -2,9 +2,8 @@ data(dengue2020) data_limpia <- limpiar_data_sivigila(dengue2020) test_that("`per_etn` funciona correctamente", { - data_agrupada <- agrupar_per_etn(data_event = data_limpia) - + expect_s3_class(data_agrupada, "data.frame") expect_true("cod_eve" %in% names(data_agrupada)) expect_true("nombre_evento" %in% names(data_agrupada)) @@ -13,30 +12,42 @@ test_that("`per_etn` funciona correctamente", { expect_true("nombre_per_etn" %in% names(data_agrupada)) expect_true("casos" %in% names(data_agrupada)) expect_true("porcentaje" %in% names(data_agrupada)) - - expect_equal(data_agrupada[["casos"]], c(1, 1, 43)) - + + expect_equal(data_agrupada[["casos"]], c(1, 1, 45)) + plot <- plot_per_etn(data_agrupada) expect_s3_class(plot, "ggplot") - }) test_that("`per_etn` maneja errores correctamente", { - - expect_error(agrupar_per_etn(data_event = list(a = 1, b = 2)), - "El parametro data_event debe ser un data.frame") - - expect_error(agrupar_per_etn(data_event = data_limpia, cols_etn = TRUE), - "El parametro cols_etn debe ser una cadena de caracteres") - - expect_error(agrupar_per_etn(data_event = data_limpia, - porcentaje = "boolean"), - "El parametro porcentaje debe ser un booleano") - - expect_error(plot_per_etn(data_agrupada = list(a = 1, b = 2)), - "El parametro data_agrupada debe ser un data.frame") - - expect_error(plot_per_etn(data_agrupada = data_limpia, - col_etn = 1), - "El parametro col_etn debe ser una cadena de caracteres") + expect_error( + agrupar_per_etn(data_event = list(a = 1, b = 2)), + "El parametro data_event debe ser un data.frame" + ) + + expect_error( + agrupar_per_etn(data_event = data_limpia, cols_etn = TRUE), + "El parametro cols_etn debe ser una cadena de caracteres" + ) + + expect_error( + agrupar_per_etn( + data_event = data_limpia, + porcentaje = "boolean" + ), + "El parametro porcentaje debe ser un booleano" + ) + + expect_error( + plot_per_etn(data_agrupada = list(a = 1, b = 2)), + "El parametro data_agrupada debe ser un data.frame" + ) + + expect_error( + plot_per_etn( + data_agrupada = data_limpia, + col_etn = 1 + ), + "El parametro col_etn debe ser una cadena de caracteres" + ) }) diff --git a/tests/testthat/test-semanaepi.R b/tests/testthat/test-semanaepi.R index 082cc007..0ae53006 100644 --- a/tests/testthat/test-semanaepi.R +++ b/tests/testthat/test-semanaepi.R @@ -2,28 +2,40 @@ data(dengue2020) data_limpia <- limpiar_data_sivigila(data_event = dengue2020) test_that("`agrupar_semanaepi` funciona correctamente", { - data_agrupada <- agrupar_semanaepi(data_limpia) expect_s3_class(data_agrupada, "data.frame") expect_equal(colnames(data_agrupada), c("semana", "casos")) - - expect_equal(data_agrupada[["casos"]], - c(1, 1, 32, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - rep(NA, 39))) + + expect_equal( + data_agrupada[["casos"]], + c( + 2, 1, 33, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + rep(NA, 39) + ) + ) }) test_that("`agrupar_semanaepi` maneja errores correctamente", { - - expect_error(agrupar_semanaepi(), - "El parametro data_event es obligatorio") - - expect_error(agrupar_semanaepi(data_event = list(a = 1, b = 2)), - "El parametro data_event debe ser un data.frame") - - expect_error(agrupar_semanaepi(data_event = data.frame()), - "El parametro data_event no debe estar vacio") - - expect_error(agrupar_semanaepi(data_event = data_limpia, - col_semanaepi = TRUE), - "El parametro col_semanaepi debe ser una cadena de caracteres") + expect_error( + agrupar_semanaepi(), + "El parametro data_event es obligatorio" + ) + + expect_error( + agrupar_semanaepi(data_event = list(a = 1, b = 2)), + "El parametro data_event debe ser un data.frame" + ) + + expect_error( + agrupar_semanaepi(data_event = data.frame()), + "El parametro data_event no debe estar vacio" + ) + + expect_error( + agrupar_semanaepi( + data_event = data_limpia, + col_semanaepi = TRUE + ), + "El parametro col_semanaepi debe ser una cadena de caracteres" + ) }) diff --git a/tests/testthat/test-sex.R b/tests/testthat/test-sex.R index 302454ca..3a932c3e 100644 --- a/tests/testthat/test-sex.R +++ b/tests/testthat/test-sex.R @@ -2,50 +2,66 @@ data(dengue2020) data_limpia <- limpiar_data_sivigila(dengue2020) test_that("`sex` funciona correctamente", { + data_agrupada <- agrupar_sex( + data_event = data_limpia, + porcentaje = TRUE + ) - data_agrupada <- agrupar_sex(data_event = data_limpia, - porcentaje = TRUE) - expect_s3_class(data_agrupada, "data.frame") expect_true("cod_eve" %in% names(data_agrupada)) expect_true("nombre_evento" %in% names(data_agrupada)) expect_true("ano" %in% names(data_agrupada)) expect_true("sexo" %in% names(data_agrupada)) expect_true("casos" %in% names(data_agrupada)) - - expect_equal(data_agrupada[["casos"]], - c(21, 24)) - + + expect_equal( + data_agrupada[["casos"]], + c(22, 25) + ) + plot <- plot_sex(data_agrupada) expect_s3_class(plot, "ggplot") - }) test_that("`sex` maneja errores correctamente", { - - expect_error(agrupar_sex(data_event = list(a = 1, b = 2)), - "El parametro data_event debe ser un data.frame") - - expect_error(agrupar_sex(data_event = data_limpia, col_sex = TRUE), - "El parametro col_sex debe ser una cadena de caracteres") - - expect_error(agrupar_sex(data_event = data_limpia, - porcentaje = "boolean"), - "El parametro porcentaje debe ser un booleano") - - expect_error(plot_sex(data_agrupada = list(a = 1, b = 2)), - "El parametro data_agrupada debe ser un data.frame") - - expect_error(plot_sex(data_agrupada = data_limpia, - col_sex = 1), - "El parametro col_sex debe ser una cadena de caracteres") + expect_error( + agrupar_sex(data_event = list(a = 1, b = 2)), + "El parametro data_event debe ser un data.frame" + ) + + expect_error( + agrupar_sex(data_event = data_limpia, col_sex = TRUE), + "El parametro col_sex debe ser una cadena de caracteres" + ) + + expect_error( + agrupar_sex( + data_event = data_limpia, + porcentaje = "boolean" + ), + "El parametro porcentaje debe ser un booleano" + ) + + expect_error( + plot_sex(data_agrupada = list(a = 1, b = 2)), + "El parametro data_agrupada debe ser un data.frame" + ) + + expect_error( + plot_sex( + data_agrupada = data_limpia, + col_sex = 1 + ), + "El parametro col_sex debe ser una cadena de caracteres" + ) }) test_that("`sex_semanaepi` funciona correctamente", { - - data_agrupada <- agrupar_sex_semanaepi(data_event = data_limpia, - porcentaje = TRUE) - + data_agrupada <- agrupar_sex_semanaepi( + data_event = data_limpia, + porcentaje = TRUE + ) + expect_s3_class(data_agrupada, "data.frame") expect_true("cod_eve" %in% names(data_agrupada)) expect_true("nombre_evento" %in% names(data_agrupada)) @@ -54,36 +70,56 @@ test_that("`sex_semanaepi` funciona correctamente", { expect_true("semana" %in% names(data_agrupada)) expect_true("casos" %in% names(data_agrupada)) expect_true("porcentaje" %in% names(data_agrupada)) - - expect_equal(data_agrupada[["casos"]], - c(1, 14, 1, 1, 1, 1, 1, 1, 1, 18, 1, 1, 1, 1, 1)) - + + expect_equal( + data_agrupada[["casos"]], + c(1, 15, 1, 1, 1, 1, 1, 1, 1, 1, 18, 1, 1, 1, 1, 1) + ) + plot <- plot_sex_semanaepi(data_agrupada) expect_s3_class(plot, "ggplot") - }) test_that("`sex_semanaepi` maneja errores correctamente", { - - expect_error(agrupar_sex_semanaepi(data_event = list(a = 1, b = 2)), - "El parametro data_event debe ser un data.frame") - - expect_error(agrupar_sex_semanaepi(data_event = data_limpia, - cols_sex = TRUE), - "El parametro cols_sex debe ser una cadena de caracteres") - - expect_error(agrupar_sex_semanaepi(data_event = data_limpia, - porcentaje = "boolean"), - "El parametro porcentaje debe ser un booleano") - - expect_error(plot_sex_semanaepi(data_agrupada = list(a = 1, b = 2)), - "El parametro data_agrupada debe ser un data.frame") - - expect_error(plot_sex_semanaepi(data_agrupada = data_limpia, - col_sex = 1), - "El parametro col_sex debe ser una cadena de caracteres") - - expect_error(plot_sex_semanaepi(data_agrupada = data_limpia, - col_semanaepi = 1), - "El parametro col_semanaepi debe ser una cadena de caracteres") + expect_error( + agrupar_sex_semanaepi(data_event = list(a = 1, b = 2)), + "El parametro data_event debe ser un data.frame" + ) + + expect_error( + agrupar_sex_semanaepi( + data_event = data_limpia, + cols_sex = TRUE + ), + "El parametro cols_sex debe ser una cadena de caracteres" + ) + + expect_error( + agrupar_sex_semanaepi( + data_event = data_limpia, + porcentaje = "boolean" + ), + "El parametro porcentaje debe ser un booleano" + ) + + expect_error( + plot_sex_semanaepi(data_agrupada = list(a = 1, b = 2)), + "El parametro data_agrupada debe ser un data.frame" + ) + + expect_error( + plot_sex_semanaepi( + data_agrupada = data_limpia, + col_sex = 1 + ), + "El parametro col_sex debe ser una cadena de caracteres" + ) + + expect_error( + plot_sex_semanaepi( + data_agrupada = data_limpia, + col_semanaepi = 1 + ), + "El parametro col_semanaepi debe ser una cadena de caracteres" + ) }) diff --git a/tests/testthat/test-tipo_caso.R b/tests/testthat/test-tipo_caso.R index 524e0fbb..62bfa883 100644 --- a/tests/testthat/test-tipo_caso.R +++ b/tests/testthat/test-tipo_caso.R @@ -2,9 +2,8 @@ data(dengue2020) data_limpia <- limpiar_data_sivigila(dengue2020) test_that("`tipo_caso` funciona correctamente", { - data_agrupada <- agrupar_tipo_caso(data_event = data_limpia) - + expect_s3_class(data_agrupada, "data.frame") expect_true("cod_eve" %in% names(data_agrupada)) expect_true("nombre_evento" %in% names(data_agrupada)) @@ -12,36 +11,47 @@ test_that("`tipo_caso` funciona correctamente", { expect_true("tip_cas" %in% names(data_agrupada)) expect_true("nombre_tip_cas" %in% names(data_agrupada)) expect_true("casos" %in% names(data_agrupada)) - - expect_equal(data_agrupada[["casos"]], - c(36, 8, 1)) - + + expect_equal( + data_agrupada[["casos"]], + c(37, 9, 1) + ) + plot <- plot_tipo_caso(data_agrupada) expect_s3_class(plot, "ggplot") - }) test_that("`tipo_caso` maneja errores correctamente", { - - expect_error(agrupar_tipo_caso(data_event = list(a = 1, b = 2)), - "El parametro data_event debe ser un data.frame") - - expect_error(agrupar_tipo_caso(data_event = data_limpia, - cols_tipo = TRUE), - "El parametro cols_tipo debe ser una cadena de caracteres") - - expect_error(plot_tipo_caso(data_agrupada = list(a = 1, b = 2)), - "El parametro data_agrupada debe ser un data.frame") - - expect_error(plot_tipo_caso(data_agrupada = data_limpia, col_tipo = 1), - "El parametro col_tipo debe ser una cadena de caracteres") + expect_error( + agrupar_tipo_caso(data_event = list(a = 1, b = 2)), + "El parametro data_event debe ser un data.frame" + ) + + expect_error( + agrupar_tipo_caso( + data_event = data_limpia, + cols_tipo = TRUE + ), + "El parametro cols_tipo debe ser una cadena de caracteres" + ) + + expect_error( + plot_tipo_caso(data_agrupada = list(a = 1, b = 2)), + "El parametro data_agrupada debe ser un data.frame" + ) + + expect_error( + plot_tipo_caso(data_agrupada = data_limpia, col_tipo = 1), + "El parametro col_tipo debe ser una cadena de caracteres" + ) }) test_that("`tipo_caso_years` funciona correctamente", { - - data_agrupada <- agrupar_tipo_caso(data_event = data_limpia, - cols_tipo = c("tip_cas","ano")) - + data_agrupada <- agrupar_tipo_caso( + data_event = data_limpia, + cols_tipo = c("tip_cas", "ano") + ) + expect_s3_class(data_agrupada, "data.frame") expect_true("cod_eve" %in% names(data_agrupada)) expect_true("nombre_evento" %in% names(data_agrupada)) @@ -49,24 +59,34 @@ test_that("`tipo_caso_years` funciona correctamente", { expect_true("tip_cas" %in% names(data_agrupada)) expect_true("nombre_tip_cas" %in% names(data_agrupada)) expect_true("casos" %in% names(data_agrupada)) - - expect_equal(data_agrupada[["casos"]], - c(36, 8, 1)) - + + expect_equal( + data_agrupada[["casos"]], + c(37, 9, 1) + ) + plot <- plot_tipo_caso_years(data_agrupada) expect_s3_class(plot, "ggplot") - }) test_that("`tipo_caso_years` maneja errores correctamente", { - - expect_error(plot_tipo_caso_years(data_agrupada = list(a = 1, b = 2)), - "El parametro data_agrupada debe ser un data.frame") - - expect_error(plot_tipo_caso_years(data_agrupada = data_limpia, - col_tipo = 1), - "El parametro col_tipo debe ser una cadena de caracteres") - expect_error(plot_tipo_caso_years(data_agrupada = data_limpia, - col_tipo = "tip_cas", col_year = 1), - "El parametro col_year debe ser una cadena de caracteres") + expect_error( + plot_tipo_caso_years(data_agrupada = list(a = 1, b = 2)), + "El parametro data_agrupada debe ser un data.frame" + ) + + expect_error( + plot_tipo_caso_years( + data_agrupada = data_limpia, + col_tipo = 1 + ), + "El parametro col_tipo debe ser una cadena de caracteres" + ) + expect_error( + plot_tipo_caso_years( + data_agrupada = data_limpia, + col_tipo = "tip_cas", col_year = 1 + ), + "El parametro col_year debe ser una cadena de caracteres" + ) }) diff --git a/tests/testthat/test-tipos_event.R b/tests/testthat/test-tipos_event.R index 169563dc..0c76d108 100644 --- a/tests/testthat/test-tipos_event.R +++ b/tests/testthat/test-tipos_event.R @@ -2,33 +2,40 @@ data(dengue2020) data_limpia <- limpiar_data_sivigila(dengue2020) test_that("`tipos_event` funciona correctamente", { - data_agrupada <- agrupar_eventos(data_event = data_limpia) expect_s3_class(data_agrupada, "data.frame") expect_true("cod_eve" %in% names(data_agrupada)) expect_true("nombre_evento" %in% names(data_agrupada)) expect_true("ano" %in% names(data_agrupada)) expect_true("casos" %in% names(data_agrupada)) - - expect_equal(data_agrupada[["casos"]], 45) - + + expect_equal(data_agrupada[["casos"]], 47) + plot <- plot_tabla_tipos_event(data_agrupada) expect_s3_class(plot, "kableExtra") - }) test_that("`tipos_event` maneja errores correctamente", { - - expect_error(agrupar_eventos(data_event = list(a = 1, b = 2)), - "El parametro data_event debe ser un data.frame") - - expect_error(agrupar_eventos(data_event = data_limpia, col_event = TRUE), - "El parametro col_event debe ser una cadena de caracteres") - - expect_error(plot_tabla_tipos_event(data_agrupada = list(a = 1, b = 2)), - "El parametro data_agrupada debe ser un data.frame") - - expect_error(plot_tabla_tipos_event(data_agrupada = data_limpia, - col_event = 1), - "El parametro col_event debe ser una cadena de caracteres") + expect_error( + agrupar_eventos(data_event = list(a = 1, b = 2)), + "El parametro data_event debe ser un data.frame" + ) + + expect_error( + agrupar_eventos(data_event = data_limpia, col_event = TRUE), + "El parametro col_event debe ser una cadena de caracteres" + ) + + expect_error( + plot_tabla_tipos_event(data_agrupada = list(a = 1, b = 2)), + "El parametro data_agrupada debe ser un data.frame" + ) + + expect_error( + plot_tabla_tipos_event( + data_agrupada = data_limpia, + col_event = 1 + ), + "El parametro col_event debe ser una cadena de caracteres" + ) }) diff --git a/tests/testthat/test-utils.R b/tests/testthat/test-utils.R index 8a698ef2..5f18b463 100644 --- a/tests/testthat/test-utils.R +++ b/tests/testthat/test-utils.R @@ -3,188 +3,277 @@ data_limpia <- limpiar_data_sivigila(data_event = dengue2020) set.seed(123) test_that("`obtener_meses_mas_casos` funciona correctamente", { - - casos_inisintomas <- agrupar_fecha_inisintomas(data_limpia) - result_meses <- obtener_meses_mas_casos(data_event = casos_inisintomas, - col_fechas = "ini_sin", - col_casos = "casos", - top = 3, - concat_vals = TRUE) - + casos_inisintomas <- agrupar_fecha_inisintomas(data_limpia) + result_meses <- obtener_meses_mas_casos( + data_event = casos_inisintomas, + col_fechas = "ini_sin", + col_casos = "casos", + top = 3, + concat_vals = TRUE + ) + expect_equal(result_meses, "enero") }) test_that("`obtener_meses_mas_casos` maneja errores correctamente", { - - expect_error(obtener_meses_mas_casos(data_event = list(a = 1, b = 2), - col_fechas = "ini_sin"), - "El parametro data_event debe ser un data.frame") - - expect_error(obtener_meses_mas_casos(data_event = data_limpia, - col_fechas = 1), - "El parametro col_fechas debe ser una cadena de caracteres") + expect_error( + obtener_meses_mas_casos( + data_event = list(a = 1, b = 2), + col_fechas = "ini_sin" + ), + "El parametro data_event debe ser un data.frame" + ) + + expect_error( + obtener_meses_mas_casos( + data_event = data_limpia, + col_fechas = 1 + ), + "El parametro col_fechas debe ser una cadena de caracteres" + ) }) test_that("`obtener_fila_mas_casos` funciona correctamente", { - - casos_sex <- agrupar_sex(data_event = data_limpia, - porcentaje = TRUE) + casos_sex <- agrupar_sex( + data_event = data_limpia, + porcentaje = TRUE + ) result_fila <- obtener_fila_mas_casos(data_event = casos_sex) expect_s3_class(result_fila, "data.frame") - - expect_equal(result_fila$casos, 24) + + expect_equal(result_fila$casos, 25) }) test_that("`obtener_fila_mas_casos` maneja errores correctamente", { - - expect_error(obtener_meses_mas_casos(data_event = list(a = 1, b = 2), - col_fechas = "ini_sin"), - "El parametro data_event debe ser un data.frame") + expect_error( + obtener_meses_mas_casos( + data_event = list(a = 1, b = 2), + col_fechas = "ini_sin" + ), + "El parametro data_event debe ser un data.frame" + ) }) test_that("`obtener_tip_ocurren_geo` funciona correctamente", { - result_tip <- obtener_tip_ocurren_geo(cod_event = 210) - expect_equal(result_tip, c("cod_dpto_o", "departamento_ocurrencia", - "cod_mun_o", "municipio_ocurrencia", - "ocurrencia")) + expect_equal(result_tip, c( + "cod_dpto_o", "departamento_ocurrencia", + "cod_mun_o", "municipio_ocurrencia", + "ocurrencia" + )) +}) + +test_that("`obtener_tip_ocurren_geo` noficacion funciona correctamente", { + result_tip <- obtener_tip_ocurren_geo(cod_event = 351) + expect_equal(result_tip, c( + "cod_dpto_n", "departamento_notificacion", + "cod_mun_n", "municipio_notificacion", + "notificacion" + )) +}) + +test_that("`obtener_tip_ocurren_geo` residencia funciona correctamente", { + result_tip <- obtener_tip_ocurren_geo(cod_event = 110) + expect_equal(result_tip, c( + "cod_dpto_r", "departamento_residencia", + "cod_mun_r", "municipio_residencia", + "residencia" + )) }) test_that("`obtener_tip_ocurren_geo` maneja errores correctamente", { - - expect_error(obtener_tip_ocurren_geo(), - "Debe ingresar algun valor en cod_event o nombre_event") + expect_error( + obtener_tip_ocurren_geo(), + "El parametro cod_event o nombre_event no debe estar vacio" + ) }) test_that("`obtener_info_depts` funciona correctamente", { - result_dpto <- obtener_info_depts(dpto = "ANTIOQUIA") expect_s3_class(result_dpto, "data.frame") expect_equal(nrow(result_dpto), 125) - + result_mpio <- obtener_info_depts(dpto = "ANTIOQUIA", mpio = "MEDELLIN") expect_s3_class(result_mpio, "data.frame") expect_equal(nrow(result_mpio), 1) - result_mpio <- obtener_info_depts(dpto = 05, mpio = "05001") + result_mpio <- obtener_info_depts(dpto = 05, mpio = "05001") expect_s3_class(result_mpio, "data.frame") expect_equal(nrow(result_mpio), 1) - - result_mpio <- obtener_info_depts(dpto = 05, mpio = 001) + + result_mpio <- obtener_info_depts(dpto = 05, mpio = 001) + expect_s3_class(result_mpio, "data.frame") + expect_equal(nrow(result_mpio), 1) + + result_mpio <- obtener_info_depts( + dpto = "bogota dc", + mpio = "bogota dc" + ) expect_s3_class(result_mpio, "data.frame") expect_equal(nrow(result_mpio), 1) - result_mpio <- obtener_info_depts(dpto = "bogota dc", - mpio = "bogota dc") + result_mpio <- obtener_info_depts( + dpto = "bogota dc", + mpio = "bogota dc" + ) expect_s3_class(result_mpio, "data.frame") expect_equal(nrow(result_mpio), 1) + }) test_that("`obtener_info_depts` maneja errores correctamente", { - - expect_error(obtener_info_depts(), - "El parametro dpto es obligatorio") - expect_error(obtener_info_depts(dpto = TRUE), - "El parametro dpto debe ser una cadena de caracteres") + expect_error( + obtener_info_depts(), + "El parametro dpto es obligatorio" + ) + expect_error( + obtener_info_depts(dpto = TRUE), + "El parametro dpto debe ser una cadena de caracteres" + ) }) test_that("`obtener_dptos` funciona correctamente", { - result_dptos <- obtener_dptos() expect_equal(length(result_dptos), 34) }) test_that("`obtener_nombre_dpto` funciona correctamente", { - data_geo <- import_geo_cods() result_nomb <- obtener_nombre_dpto(data_geo, - cod_dpto = "05") + cod_dpto = "05" + ) expect_equal(result_nomb, "antioquia") result_nomb <- obtener_nombre_dpto(data_geo, - cod_dpto = 05) + cod_dpto = 05 + ) expect_equal(result_nomb, "antioquia") result_nomb <- obtener_nombre_dpto(data_geo, - cod_dpto = 8) + cod_dpto = 8 + ) expect_equal(result_nomb, "atlantico") }) test_that("`obtener_nombre_dpto` maneja errores correctamente", { - - expect_error(obtener_nombre_dpto(list(a = 1, b = 2)), - "El parametro data_geo debe ser un data.frame") - expect_error(obtener_nombre_dpto(data.frame(cod_dpto = 05, dpto = "antioquia")), - "El parametro cod_dpto es obligatorio") + expect_error( + obtener_nombre_dpto(list(a = 1, b = 2)), + "El parametro data_geo debe ser un data.frame" + ) + expect_error( + obtener_nombre_dpto(data.frame(cod_dpto = 05, dpto = "antioquia")), + "El parametro cod_dpto es obligatorio" + ) }) test_that("`obtener_nombre_mpio` funciona correctamente", { - data_geo <- import_geo_cods() - result_nomb <- obtener_nombre_mpio(data_geo, - cod_dpto = "05", - cod_mpio = "001") + result_nomb <- obtener_nombre_mpio(data_geo, + cod_dpto = "05", + cod_mpio = "001" + ) expect_equal(result_nomb, "medellin") - result_nomb <- obtener_nombre_mpio(data_geo, - cod_dpto = 05, - cod_mpio = 001) + result_nomb <- obtener_nombre_mpio(data_geo, + cod_dpto = 05, + cod_mpio = 001 + ) expect_equal(result_nomb, "medellin") - result_nomb <- obtener_nombre_mpio(data_geo, - cod_dpto = 8, - cod_mpio = 1) + result_nomb <- obtener_nombre_mpio(data_geo, + cod_dpto = 8, + cod_mpio = 1 + ) expect_equal(result_nomb, "barranquilla") }) test_that("`obtener_nombre_mpio` maneja errores correctamente", { - - expect_error(obtener_nombre_mpio(list(a = 1, b = 2)), - "El parametro data_geo debe ser un data.frame") - expect_error(obtener_nombre_mpio(data.frame(cod_dpto = 05, dpto = "antioquia")), - "El parametro cod_dpto es obligatorio") - expect_error(obtener_nombre_mpio(data.frame(cod_dpto = 05, dpto = "antioquia"), - cod_dpto = 05), - "El parametro cod_mpio es obligatorio") + expect_error( + obtener_nombre_mpio(list(a = 1, b = 2)), + "El parametro data_geo debe ser un data.frame" + ) + expect_error( + obtener_nombre_mpio(data.frame(cod_dpto = 05, dpto = "antioquia")), + "El parametro cod_dpto es obligatorio" + ) + expect_error( + obtener_nombre_mpio(data.frame(cod_dpto = 05, dpto = "antioquia"), + cod_dpto = 05 + ), + "El parametro cod_mpio es obligatorio" + ) }) test_that("`obtener_cond_inciden_event` funciona correctamente", { - condicion_incidencia <- obtener_cond_inciden_event(cod_eve = 210) - + expect_s3_class(condicion_incidencia, "data.frame") - + expect_true("cod_eve" %in% names(condicion_incidencia)) expect_true("numerador" %in% names(condicion_incidencia)) expect_true("condiciones_numerador" %in% names(condicion_incidencia)) expect_true("denominador" %in% names(condicion_incidencia)) expect_true("condiciones_denominador" %in% names(condicion_incidencia)) expect_true("coeficiente" %in% names(condicion_incidencia)) - + expect_equal(condicion_incidencia$numerador, "casos") expect_equal(condicion_incidencia$denominador, "riesgo") expect_equal(condicion_incidencia$coeficiente, 100000) +}) + +test_that("`obtener_cond_inciden_event` por defecto funciona correctamente", { + condicion_incidencia <- obtener_cond_inciden_event(cod_eve = 150) + + expect_s3_class(condicion_incidencia, "data.frame") + + expect_true("cod_eve" %in% names(condicion_incidencia)) + expect_true("numerador" %in% names(condicion_incidencia)) + expect_true("condiciones_numerador" %in% names(condicion_incidencia)) + expect_true("denominador" %in% names(condicion_incidencia)) + expect_true("condiciones_denominador" %in% names(condicion_incidencia)) + expect_true("coeficiente" %in% names(condicion_incidencia)) + expect_equal(condicion_incidencia$numerador, "casos") + expect_equal(condicion_incidencia$denominador, "proyecciones") + expect_equal(condicion_incidencia$coeficiente, 10000) }) test_that("`obtener_cond_inciden_event` maneja errores correctamente", { - - expect_error(obtener_cond_inciden_event(), - "El parametro cod_eve es obligatorio") + expect_error( + obtener_cond_inciden_event(), + "El parametro cod_eve es obligatorio" + ) }) test_that("`obtener_text_sex` funciona correctamente", { - - data_agrupada <- agrupar_sex(data_event = data_limpia, - porcentaje = TRUE) + data_agrupada <- agrupar_sex( + data_event = data_limpia, + porcentaje = TRUE + ) text_sex <- obtener_text_sex(data_agrupada, year = 2020, figura = 3) - - expect_equal(text_sex$text, - paste0("En el total de casos para 2020 se ", - "observa una predominancia del sexo ", - "masculino con 53.33% respecto al sexo ", - "femenino con 46.67% (Ver Figura 3).")) - + + expect_equal( + text_sex$text, + paste0( + "En el total de casos para 2020 se ", + "observa una predominancia del sexo ", + "masculino con 53.19% respecto al sexo ", + "femenino con 46.81% (Ver Figura 3)." + ) + ) }) test_that("`obtener_text_sex` maneja errores correctamente", { + expect_error( + obtener_cond_inciden_event(), + "El parametro cod_eve es obligatorio" + ) +}) + +test_that("`concatenar_vals_token` funciona correctamente", { + data_agrupada <- agrupar_sex( + data_event = data_limpia, + porcentaje = TRUE + ) + text_token <- concatenar_vals_token(c("Hola", "mundo", "prueba")) - expect_error(obtener_cond_inciden_event(), - "El parametro cod_eve es obligatorio") -}) \ No newline at end of file + expect_equal( + text_token, "Hola, mundo y prueba" + ) +}) diff --git a/tests/testthat/test-years.R b/tests/testthat/test-years.R index ad88f92e..9e28b636 100644 --- a/tests/testthat/test-years.R +++ b/tests/testthat/test-years.R @@ -2,26 +2,25 @@ data(dengue2020) data_limpia <- limpiar_data_sivigila(dengue2020) test_that("`year` funciona correctamente", { - data_agrupada <- agrupar_years(data_event = data_limpia) - + expect_s3_class(data_agrupada, "data.frame") expect_true("cod_eve" %in% names(data_agrupada)) expect_true("nombre_evento" %in% names(data_agrupada)) expect_true("ano" %in% names(data_agrupada)) expect_true("casos" %in% names(data_agrupada)) - - expect_equal(data_agrupada[["casos"]], 45) - + + expect_equal(data_agrupada[["casos"]], 47) + plot <- plot_years(data_agrupada) expect_s3_class(plot, "ggplot") - }) test_that("`years` funciona correctamente", { - - data_years <- import_data_event(nombre_event = "MORTALIDAD MATERNA", - years = seq(2019, 2020)) + data_years <- import_data_event( + nombre_event = "MORTALIDAD MATERNA", + years = seq(2019, 2020) + ) data_limpia <- limpiar_data_sivigila(data_years) data_agrupada <- agrupar_years(data_event = data_limpia) @@ -30,26 +29,34 @@ test_that("`years` funciona correctamente", { expect_true("nombre_evento" %in% names(data_agrupada)) expect_true("ano" %in% names(data_agrupada)) expect_true("casos" %in% names(data_agrupada)) - + expect_equal(data_agrupada[["casos"]], c(550, 607)) - + plot <- plot_years(data_agrupada) expect_s3_class(plot, "ggplot") - }) test_that("`year` maneja errores correctamente", { - - expect_error(agrupar_years(data_event = list(a = 1, b = 2)), - "El parametro data_event debe ser un data.frame") - - expect_error(agrupar_years(data_event = data_limpia, col_year = TRUE), - "El parametro col_year debe ser una cadena de caracteres") - - expect_error(plot_years(data_agrupada = list(a = 1, b = 2)), - "El parametro data_agrupada debe ser un data.frame") - - expect_error(plot_years(data_agrupada = data_limpia, - col_year = 1), - "El parametro col_year debe ser una cadena de caracteres") + expect_error( + agrupar_years(data_event = list(a = 1, b = 2)), + "El parametro data_event debe ser un data.frame" + ) + + expect_error( + agrupar_years(data_event = data_limpia, col_year = TRUE), + "El parametro col_year debe ser una cadena de caracteres" + ) + + expect_error( + plot_years(data_agrupada = list(a = 1, b = 2)), + "El parametro data_agrupada debe ser un data.frame" + ) + + expect_error( + plot_years( + data_agrupada = data_limpia, + col_year = 1 + ), + "El parametro col_year debe ser una cadena de caracteres" + ) }) diff --git a/vignettes/articles/automated_report.Rmd b/vignettes/articles/automated_report.Rmd index 97edfd30..0bc0189e 100644 --- a/vignettes/articles/automated_report.Rmd +++ b/vignettes/articles/automated_report.Rmd @@ -31,9 +31,9 @@ llamada `Reporte B谩sico {sivirep}`, la cual contiene 12 secciones y recibe los * Nombre de departamento (opcional) * Nombre del municipio (opcional) -Con esta plantilla podr谩s generar reportes a nivel nacional, departamental o municipal y descargar la informaci贸n de la enfermedad o evento directamente de los microdatos del SIVIGILA, seg煤n los valores que ingreses en estos par谩metros. +Con esta plantilla podr谩s generar reportes a nivel nacional, departamental o municipal en Colombia y descargar la informaci贸n sobre la enfermedad o evento de inter茅s directamente de los microdatos del [SIVIGILA](https://www.ins.gov.co/Direcciones/Vigilancia/Paginas/SIVIGILA.aspx) (Sistema Nacional de Vigilancia en Salud P煤blica de Colombia), seg煤n los valores que ingreses en estos par谩metros. -Para hacer uso de la plantilla del reporte puedes iniciar importando el +Para hacer uso de la plantilla del reporte primero debes importar el paquete despu茅s de finalizada su [instalaci贸n](https://epiverse-trace.github.io/sivirep/articles/sivirep.html#instalaci贸n) con el comando: diff --git a/vignettes/articles/custom_analysis.Rmd b/vignettes/articles/custom_analysis.Rmd index 964fa38b..b348d744 100644 --- a/vignettes/articles/custom_analysis.Rmd +++ b/vignettes/articles/custom_analysis.Rmd @@ -44,8 +44,10 @@ importaci贸n de datos desde la fuente de SIVIGILA utilizando un formato parametrizado basado en la enfermedad y el a帽o. ```{r import-data-event} -data_event <- import_data_event(year = 2020, - nombre_event = "Dengue") +data_event <- import_data_event( + year = 2020, + nombre_event = "Dengue" +) ``` > 馃挕 **Tip**: Evita retrasos en el tiempo al importar los datos @@ -104,8 +106,10 @@ subnacional, seleccionando casos espec铆ficos basados en la ubicaci贸n geogr谩fica. ```{r geo-filtro} -data_event_filtrada <- geo_filtro(data_event = data_event, - dpto = "Choco") +data_event_filtrada <- geo_filtro( + data_event = data_event, + dpto = "Choco" +) ``` ### 4. Distribuci贸n temporal de casos @@ -123,8 +127,10 @@ proporciona una funci贸n que permite esta agrupaci贸n llamada `agrupar_fecha_inisintomas`. ```{r agrupar-fecha-inicio-sintomas} -casos_ini_sintomas <- agrupar_fecha_inisintomas(data_event = - data_event) +casos_ini_sintomas <- agrupar_fecha_inisintomas( + data_event = + data_event +) ``` > 馃挕 **Tip**: Obt茅n los primeros n meses con m谩s casos @@ -140,8 +146,10 @@ agrupado los datos por d铆a, es posible que prefieras representarlo por semana epidemiol贸gica, como en: ```{r plot-fecha-inicio-sintomas, fig.height = 4, fig.width = 8} -plot_fecha_inisintomas(data_agrupada = casos_ini_sintomas, - uni_marca = "semanaepi") +plot_fecha_inisintomas( + data_agrupada = casos_ini_sintomas, + uni_marca = "semanaepi" +) ``` ### 5. Edad y sexo @@ -156,8 +164,10 @@ embargo, la fuente de SIVIGILA solo registra el sexo. los porcentajes por sexo despu茅s del proceso de limpieza. ```{r agrupar-sexo} -casos_sex <- agrupar_sex(data_event = data_event, - porcentaje = TRUE) +casos_sex <- agrupar_sex( + data_event = data_event, + porcentaje = TRUE +) ``` Adem谩s, `sivirep` cuenta con una funci贸n para generar el gr谩fico por @@ -216,9 +226,10 @@ simult谩nea y obtener el n煤mero de casos y los porcentajes correspondientes. Adem谩s, permite personalizar el intervalo de edad. ```{r agrupar-edad-sexo} -casos_edad_sex <- agrupar_edad_sex(data_event = data_event, - interval_edad = 10) - +casos_edad_sex <- agrupar_edad_sex( + data_event = data_event, + interval_edad = 10 +) ``` La funci贸n de visualizaci贸n correspondiente es `plot_edad_sex`. @@ -239,8 +250,10 @@ llamadas departamentos. `sivirep` proporciona una funci贸n llamada departamento o municipio. ```{r agrupar-municipios} -dist_esp_dept <- agrupar_mpio(data_event = data_event_filtrada, - dpto = "Choco") +dist_esp_dept <- agrupar_mpio( + data_event = data_event_filtrada, + dpto = "Choco" +) ``` Actualmente, con la funci贸n llamada `plot_map`, el usuario puede generar @@ -248,8 +261,10 @@ un mapa est谩tico de Colombia que muestra la distribuci贸n de casos por departamentos y municipios. ```{r plot-mapa, results = 'hide', echo = TRUE, error = FALSE, warning = FALSE, include = FALSE, message = FALSE} -mapa <- plot_map(data_agrupada = dist_esp_dept, dpto = "Choco", - col_distribucion = "casos") +mapa <- plot_map( + data_agrupada = dist_esp_dept, dpto = "Choco", + col_distribucion = "casos" +) ``` ```{r mapa, fig.height = 14, fig.width = 10} diff --git a/vignettes/articles/resources.Rmd b/vignettes/articles/resources.Rmd index 2c14e028..c335b7bb 100644 --- a/vignettes/articles/resources.Rmd +++ b/vignettes/articles/resources.Rmd @@ -18,18 +18,22 @@ library(sivirep) ```{r list-events, echo = FALSE} lista_eventos <- list_events() knitr::kable(lista_eventos, - col.names = c("Enfermedad", "A帽o")) + col.names = c("Enfermedad", "A帽o") +) ``` -## Divisi贸n Pol铆tica y Admnistrativa de Colombia +## Divisi贸n Pol铆tica y Administrativa de Colombia A continuaci贸n, encontrar谩s el listado de c贸digos y nombres que utiliza `sivirep` para generar la distribuci贸n espacial de casos, filtrar por departamento o municipio y producir el mapa nacional, departamental y municipal, seg煤n el est谩ndar nacional que codifica y lista las entidades territoriales denominado DIVIPOLA. ```{r list-geo, echo = FALSE} lista_geo <- import_geo_cods() knitr::kable(lista_geo, - col.names = c("C贸digo departamento", "C贸digo municipio", - "Nombre departamento", "Nombre municipio", "Tipo")) + col.names = c( + "C贸digo departamento", "C贸digo municipio", + "Nombre departamento", "Nombre municipio", "Tipo" + ) +) ``` diff --git a/vignettes/sivirep.Rmd b/vignettes/sivirep.Rmd index 4ea13abc..c464a531 100644 --- a/vignettes/sivirep.Rmd +++ b/vignettes/sivirep.Rmd @@ -30,8 +30,7 @@ library(sivirep) ## Descripci贸n La versi贸n actual de *sivirep* 0.0.2 proporciona funciones para la manipulaci贸n de datos y la generaci贸n de reportes automatizados basados en las bases de datos individualizadas de casos de -[SIVIGILA](https://www.ins.gov.co/Direcciones/Vigilancia/Paginas/SIVIGILA.aspx), -que es el sistema oficial de vigilancia epidemiol贸gica de Colombia. +[SIVIGILA](https://www.ins.gov.co/Direcciones/Vigilancia/Paginas/SIVIGILA.aspx), el sistema oficial de vigilancia epidemiol贸gica de Colombia. ## Exclusi贸n de responsabilidad @@ -46,7 +45,7 @@ Sin embargo, todav铆a existen desaf铆os, especialmente a nivel local, en cuanto El objetivo de `sivirep` es proporcionar un conjunto de herramientas para: 1) Descargar, preprocesar y preparar los datos de SIVIGILA para su posterior an谩lisis. -2) Generar informes epidemiol贸gicos automatizados adaptables al contexto. +2) Generar reportes epidemiol贸gicos automatizados adaptables al contexto. 3) Proporcionar retroalimentaci贸n sobre el sistema de vigilancia al proveedor de la fuente de datos. ## Potenciales usuarios @@ -106,15 +105,16 @@ de forma libre utilizando: ```{r list_events} lista_eventos <- list_events() knitr::kable(lista_eventos, - col.names = c("Enfermedad", "A帽o")) + col.names = c("Enfermedad", "A帽o") +) ``` ## Reporte automatizado -Actualmente, `sivirep` provee una plantilla de reporte llamada +Actualmente, `sivirep` proporciona una plantilla de reporte llamada `Reporte B谩sico {sivirep}`, la cual recibe los siguientes par谩metros de -entrada: el nombre de la enfermedad, el a帽o, el nombre de departamento -(opcional) y nombre del municipio (opcional) para descargar los datos de +entrada: el nombre de la enfermedad, el a帽o, el pa铆s, el nombre del departamento +(opcional) y el nombre del municipio (opcional) para descargar los datos de la fuente de SIVIGILA. Para hacer uso de la plantilla del reporte puedes seguir los