Skip to content

Commit

Permalink
Merge branch 'main' of github.com:RodrigoZepeda/covidmx
Browse files Browse the repository at this point in the history
  • Loading branch information
RodrigoZepeda committed Sep 8, 2022
2 parents fb9849b + 97ac7f6 commit df8ea76
Show file tree
Hide file tree
Showing 9 changed files with 212 additions and 214 deletions.
163 changes: 74 additions & 89 deletions R/casos.R
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
#' left_join(datos_covid$dict$PACIENTE, by = c("TIPO_PACIENTE" = "CLAVE"))
#' ```
#'
#' @param datos_covid (**obligatorio**) Lista de `tibble`s o `duckdb`s resultante de
#' @param datos_covid (**obligatorio**) Lista de `tibble`s o `duckdb`s resultante de
#' [descarga_datos_abiertos()] o [read_datos_abiertos()]
#'
#' @param entidades (**opcional**) Vector con las entidades de las unidades medicas a analizar.
Expand Down Expand Up @@ -235,9 +235,9 @@
#' # que otras variables puedes clasificar
#' datos_covid$dats |> dplyr::glimpse()
#'
#' #Una vez hayas concluido tu trabajo no olvides desconectar
#' # Una vez hayas concluido tu trabajo no olvides desconectar
#' datos_covid$disconnect()
#'
#'
#' @seealso [descarga_datos_abiertos()] [numero_pruebas()] [cfr()] [chr()] [estima_rt()]
#' [positividad()]
#' @export
Expand All @@ -257,8 +257,8 @@ casos <- function(datos_covid,
"YUCAT\u00c1N", "ZACATECAS"
),
group_by_entidad = TRUE,
entidad_tipo = c("Unidad Medica", "Residencia","Nacimiento"),
fecha_tipo = c("Sintomas", "Ingreso","Defuncion"),
entidad_tipo = c("Unidad Medica", "Residencia", "Nacimiento"),
fecha_tipo = c("Sintomas", "Ingreso", "Defuncion"),
tipo_clasificacion = c(
"Sospechosos", "Confirmados COVID",
"Negativo a COVID", "Inv\u00e1lido",
Expand Down Expand Up @@ -391,10 +391,10 @@ casos <- function(datos_covid,
if (nrow(entidades) < 1) {
cli::cli_abort("No logramos encontrar las entidades especificadas")
}
#Si esta la opcion de fill zeros se agrega

# Si esta la opcion de fill zeros se agrega
if (fill_zeros) {

# Check the dates to expand
.fechasminmax <- datos_covid$dats |>
dplyr::select_at(fecha_tipo) |>
Expand All @@ -403,44 +403,40 @@ casos <- function(datos_covid,
fechamax = max(!!as.symbol(fecha_tipo), na.rm = TRUE)
) |>
dplyr::collect()

.datesq <- seq(.fechasminmax$fechamin[1], .fechasminmax$fechamax[1], by = "1 day")
#Get unique values of grouping vars
if (length(.grouping_vars) > 0){
.group_values <- datos_covid$dats |>

# Get unique values of grouping vars
if (length(.grouping_vars) > 0) {
.group_values <- datos_covid$dats |>
dplyr::distinct_at(.grouping_vars) |>
dplyr::collect()
#Expand to possible combinations
dplyr::collect()

# Expand to possible combinations
.group_values <- .group_values |>
tidyr::expand(!!!.group_values)

} else {
.group_values <- NULL
}

}

lista_entidades <- paste0(entidades$CLAVE_ENTIDAD, collapse = "|")
.casos <- datos_covid$dats |>
dplyr::filter(
stringr::str_detect(paste0("\\^", !!as.symbol(entidad_tipo), "\\$"), lista_entidades)
)

#Agregamos la entidad a la combinacion si fill zeros
if (fill_zeros & group_by_entidad){

.grouping_entidad <- datos_covid$dict[[entidad_tipo]] |>

# Agregamos la entidad a la combinacion si fill zeros
if (fill_zeros & group_by_entidad) {
.grouping_entidad <- datos_covid$dict[[entidad_tipo]] |>
dplyr::filter(stringr::str_detect(!!as.symbol("CLAVE_ENTIDAD"), lista_entidades)) |>
dplyr::distinct(!!as.symbol("CLAVE_ENTIDAD"), .keep_all = FALSE) |>
dplyr::rename(!!as.symbol(entidad_tipo) := !!as.symbol("CLAVE_ENTIDAD"))
if (nrow(.grouping_entidad) == 0){
dplyr::rename(!!as.symbol(entidad_tipo) := !!as.symbol("CLAVE_ENTIDAD"))

if (nrow(.grouping_entidad) == 0) {
.grouping_entidad <- NULL
}

} else if (fill_zeros & !group_by_entidad){
} else if (fill_zeros & !group_by_entidad) {
.grouping_entidad <- NULL
}

Expand Down Expand Up @@ -476,25 +472,21 @@ casos <- function(datos_covid,
.casos <- .casos |>
dplyr::filter(!!as.symbol("CLASIFICACION_FINAL") %in% clasificaciones_finales)
}

#Agregamos la entidad a la combinacion si fill zeros
if (fill_zeros & group_by_tipo_clasificacion){


# Agregamos la entidad a la combinacion si fill zeros
if (fill_zeros & group_by_tipo_clasificacion) {
.grouping_clasificacion <- datos_covid$dict[["CLASIFICACION_FINAL"]] |>
dplyr::filter(!!as.symbol("CLAVE") %in% clasificaciones_finales) |>
dplyr::distinct(!!as.symbol("CLAVE"), .keep_all = FALSE) |>
dplyr::rename(!!as.symbol("CLASIFICACION_FINAL") := !!as.symbol("CLAVE")) |>
dplyr::mutate(!!as.symbol("CLASIFICACION_FINAL") :=
as.integer(!!as.symbol("CLASIFICACION_FINAL")))
if (nrow(.grouping_clasificacion) == 0){
dplyr::mutate(!!as.symbol("CLASIFICACION_FINAL") :=
as.integer(!!as.symbol("CLASIFICACION_FINAL")))

if (nrow(.grouping_clasificacion) == 0) {
.grouping_clasificacion <- NULL
}

} else if (fill_zeros & !group_by_tipo_clasificacion){

} else if (fill_zeros & !group_by_tipo_clasificacion) {
.grouping_clasificacion <- NULL

}

#> TIPO DE PACIENTE----
Expand All @@ -515,24 +507,22 @@ casos <- function(datos_covid,
.casos <- .casos |>
dplyr::filter(!!as.symbol("TIPO_PACIENTE") %in% lista_claves)

#Agregamos la entidad a la combinacion si fill zeros
if (fill_zeros & group_by_tipo_paciente){

# Agregamos la entidad a la combinacion si fill zeros
if (fill_zeros & group_by_tipo_paciente) {
.grouping_paciente <- datos_covid$dict[["PACIENTE"]] |>
dplyr::filter(!!as.symbol("CLAVE") %in% lista_claves) |>
dplyr::distinct(!!as.symbol("CLAVE"), .keep_all = FALSE) |>
dplyr::rename(!!as.symbol("TIPO_PACIENTE") := !!as.symbol("CLAVE")) |>
dplyr::mutate(!!as.symbol("TIPO_PACIENTE") :=
as.integer(!!as.symbol("TIPO_PACIENTE")))
if (nrow(.grouping_paciente) == 0){
dplyr::mutate(!!as.symbol("TIPO_PACIENTE") :=
as.integer(!!as.symbol("TIPO_PACIENTE")))

if (nrow(.grouping_paciente) == 0) {
.grouping_paciente <- NULL
}

} else if (fill_zeros & !group_by_tipo_paciente){
} else if (fill_zeros & !group_by_tipo_paciente) {
.grouping_paciente <- NULL
}

#> TIPO DE UCI----
# Filtramos por tipo de uci
ucis <-
Expand All @@ -547,21 +537,19 @@ casos <- function(datos_covid,
lista_claves <- as.numeric(ucis$CLAVE)
.casos <- .casos |>
dplyr::filter(!!as.symbol("UCI") %in% lista_claves)

#Agregamos la entidad a la combinacion si fill zeros
if (fill_zeros & group_by_tipo_uci){


# Agregamos la entidad a la combinacion si fill zeros
if (fill_zeros & group_by_tipo_uci) {
.grouping_uci <- datos_covid$dict[["UCI"]] |>
dplyr::filter(!!as.symbol("CLAVE") %in% lista_claves) |>
dplyr::distinct(!!as.symbol("CLAVE"), .keep_all = FALSE) |>
dplyr::rename(!!as.symbol("UCI") := !!as.symbol("CLAVE")) |>
dplyr::mutate(!!as.symbol("UCI") := as.integer(!!as.symbol("UCI")))
if (nrow(.grouping_uci) == 0){

if (nrow(.grouping_uci) == 0) {
.grouping_uci <- NULL
}

} else if (fill_zeros & !group_by_tipo_uci){
} else if (fill_zeros & !group_by_tipo_uci) {
.grouping_uci <- NULL
}

Expand All @@ -579,49 +567,46 @@ casos <- function(datos_covid,
lista_claves <- as.numeric(sectores$CLAVE)
.casos <- .casos |>
dplyr::filter(!!as.symbol("SECTOR") %in% lista_claves)

#Agregamos la entidad a la combinacion si fill zeros
if (fill_zeros & group_by_tipo_sector){


# Agregamos la entidad a la combinacion si fill zeros
if (fill_zeros & group_by_tipo_sector) {
.grouping_sector <- datos_covid$dict[["SECTOR"]] |>
dplyr::filter(!!as.symbol("CLAVE") %in% lista_claves) |>
dplyr::distinct(!!as.symbol("CLAVE"), .keep_all = FALSE) |>
dplyr::rename(!!as.symbol("SECTOR") := !!as.symbol("CLAVE")) |>
dplyr::mutate(!!as.symbol("SECTOR") := as.integer(!!as.symbol("SECTOR")))
if (nrow(.grouping_sector) == 0){

if (nrow(.grouping_sector) == 0) {
.grouping_sector <- NULL
}

} else if (fill_zeros & !group_by_tipo_sector){
} else if (fill_zeros & !group_by_tipo_sector) {
.grouping_sector <- NULL
}

#> DEFUNCIONES----
if (defunciones) {
.casos <- .casos |>
dplyr::filter(!is.na(!!as.symbol("FECHA_DEF")) &
!!as.symbol("FECHA_DEF") >= as.POSIXct("2000/01/01"))
dplyr::filter(!is.na(!!as.symbol("FECHA_DEF")) &
!!as.symbol("FECHA_DEF") >= as.POSIXct("2000/01/01"))
}

#> EDADES----
if (!is.null(edad_cut)) {
#Obtenemos los grupos de edad
# Obtenemos los grupos de edad
.casos <- .casos |>
dplyr::mutate(!!as.symbol("EDAD_CAT") := cut(!!as.symbol("EDAD"), breaks = edad_cut)) |>
dplyr::filter(!is.na(!!as.symbol("EDAD_CAT")))
}

#Agregamos la entidad a la combinacion si fill zeros
if (fill_zeros & !is.null(edad_cut)){


# Agregamos la entidad a la combinacion si fill zeros
if (fill_zeros & !is.null(edad_cut)) {
.grouping_edad <- dplyr::tibble(EDAD_CAT = cut(edad_cut, breaks = edad_cut)) |>
dplyr::filter(!is.na(!!as.symbol("EDAD_CAT")))
if (nrow(.grouping_edad) == 0){
.grouping_edad <- NULL
}
} else if (fill_zeros & is.null(edad_cut)){
dplyr::filter(!is.na(!!as.symbol("EDAD_CAT")))

if (nrow(.grouping_edad) == 0) {
.grouping_edad <- NULL
}
} else if (fill_zeros & is.null(edad_cut)) {
.grouping_edad <- NULL
}

Expand Down Expand Up @@ -675,19 +660,19 @@ casos <- function(datos_covid,
dplyr::ungroup()

if (as_tibble) {

.casos <- .casos |>
dplyr::collect()

if (fill_zeros) {
.groups <- tidyr::expand_grid(
.group_values, .grouping_entidad,
.grouping_clasificacion, .grouping_paciente,
.grouping_uci, .grouping_sector, .grouping_edad
)

.groups <- tidyr::expand_grid(.group_values, .grouping_entidad,
.grouping_clasificacion, .grouping_paciente,
.grouping_uci, .grouping_sector, .grouping_edad)

# Create grid of all possible dates
.grid_casos <- tidyr::expand_grid(!!as.symbol(fecha_tipo) := .datesq, .groups)


# Full join
.casos <- .casos |>
Expand All @@ -698,7 +683,7 @@ casos <- function(datos_covid,
}

if (nrow(entidades) > 0 & group_by_entidad) {
name_join <- c("CLAVE_ENTIDAD")
name_join <- c("CLAVE_ENTIDAD")
names(name_join) <- entidad_tipo
.casos <- .casos |> dplyr::left_join(datos_covid$dict[entidad_tipo][[1]], by = name_join)
}
Expand Down Expand Up @@ -729,9 +714,9 @@ casos <- function(datos_covid,
}

if (nrow(sectores) > 0 & group_by_tipo_sector) {
name_join <- c("CLAVE")
names(name_join) <- "SECTOR"
sector_df <- datos_covid$dict["SECTOR"][[1]]
name_join <- c("CLAVE")
names(name_join) <- "SECTOR"
sector_df <- datos_covid$dict["SECTOR"][[1]]
colnames(sector_df) <- c("CLAVE", "DESCRIPCION_TIPO_SECTOR")
.casos <- .casos |>
dplyr::left_join(sector_df, by = name_join)
Expand Down
8 changes: 4 additions & 4 deletions R/cfr.R
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@
#'
#' # Finalmente desconectamos
#' datos_covid$disconnect()
#'
#'
#' @seealso [descarga_datos_abiertos()] [numero_pruebas()] [chr()] [estima_rt()]
#' [positividad()] [casos()]
#'
Expand Down Expand Up @@ -172,13 +172,13 @@ cfr <- function(datos_covid,
group_by_tipo_sector = group_by_tipo_sector,
defunciones = FALSE,
edad_cut = edad_cut,
as_tibble = TRUE,
as_tibble = TRUE,
fill_zeros = fill_NA,
list_name = name_1,
.grouping_vars = .grouping_vars
)[[name_1]] |>
dplyr::mutate(!!as.symbol("n") :=
ifelse(!!as.symbol("n") == 0, NA, !!as.symbol("n"))) #change to NA the ones with 0
dplyr::mutate(!!as.symbol("n") :=
ifelse(!!as.symbol("n") == 0, NA, !!as.symbol("n"))) # change to NA the ones with 0

.casos_defunciones <- casos(
datos_covid = datos_covid,
Expand Down
12 changes: 6 additions & 6 deletions R/chr.R
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
#' @inheritParams casos
#' @inheritParams positividad
#'
#' @param incluir_paciente_no_especificado (**opcional**) Si en el denominador se incluyen
#' los pacientescuyo tipo es `NO ESPECIFICADO`. Por default es `FALSE` por lo que sólo
#' @param incluir_paciente_no_especificado (**opcional**) Si en el denominador se incluyen
#' los pacientescuyo tipo es `NO ESPECIFICADO`. Por default es `FALSE` por lo que sólo
#' se incluyen `AMBULATORIO`, `HOSPITALIZADO`.
#'
#' @importFrom rlang :=
Expand Down Expand Up @@ -77,7 +77,7 @@
#'
#' # Finalmente desconectamos
#' datos_covid$disconnect()
#'
#'
#' @seealso [descarga_datos_abiertos()] [numero_pruebas()] [cfr()] [estima_rt()]
#' [positividad()] [casos()]
#' @export
Expand Down Expand Up @@ -144,7 +144,7 @@ chr <- function(datos_covid,
}
}

#Obtenemos los tipos de paciente a usar
# Obtenemos los tipos de paciente a usar
if (incluir_paciente_no_especificado) {
tp <- c("AMBULATORIO", "HOSPITALIZADO", "NO ESPECIFICADO")
} else {
Expand Down Expand Up @@ -176,8 +176,8 @@ chr <- function(datos_covid,
list_name = name_1,
.grouping_vars = .grouping_vars
)[[name_1]] |>
dplyr::mutate(!!as.symbol("n") :=
ifelse(!!as.symbol("n") == 0, NA, !!as.symbol("n"))) #change to NA the ones with 0
dplyr::mutate(!!as.symbol("n") :=
ifelse(!!as.symbol("n") == 0, NA, !!as.symbol("n"))) # change to NA the ones with 0


.casos_hospitalizados <- casos(
Expand Down
Loading

0 comments on commit df8ea76

Please sign in to comment.