R/gera-100k.R

Defines functions gera_100k

Documented in gera_100k

#' @title Gera dados de casos-obitos por 100k
#'
#' @description Avalia os dados de casos e obitos do MS e gera um data.table com as informacoes de crescimento de casos e obitos semanais por UF
#'
#' @inheritParams gera_series
#'
#' @return um data.table com os dados de crescimento de casos e obitos semanais por UF
#'
#' @import data.table
#' @import zoo


gera_100k = function(dados_ps){
  # Conformando ao tipo data.table
  dados = transforma_dt(dados_ps)
  pop = transforma_dt(codeplan.boletim2::pop_idade)

  # Obtendo dados de populacao
  pop = pop[, faixa_etaria := cut(idade, c(0, 20, 30, 40, 50, 60, 70, 80, 200), right = FALSE)]

  ## Populaacao por faixa etaria
  pop = pop[,.(pop = sum(pop)), by = faixa_etaria]

  ## Alterando faixa etaria
  pop$faixa_etaria = ordered(pop$faixa_etaria)
  pop$faixa_etaria = factor(pop$faixa_etaria, labels =  c("0-19", "20-29", "30-39", "40-49", "50-59", "60-69", "70-79", "80 e +"))

  # Calculando dados mortais
  dados[, idade := as.numeric(idade)]
  dados[,`:=`(faixa_etaria = cut(idade, c(0, 20, 30, 40, 50, 60, 70, 80, 200), right = FALSE),
              ano_mes = zoo::as.yearmon(as.Date(primeiros_sintomas)),
              obito_ano_mes = zoo::as.yearmon(as.Date(data_obito)))]

  # Calculca-se casos e obitos por semana
  dados$faixa_etaria = ordered(dados$faixa_etaria)
  dados$faixa_etaria = factor(dados$faixa_etaria, labels =  c("0-19", "20-29", "30-39", "40-49", "50-59", "60-69", "70-79", "80 e +"))

  # Casos
  ## Total
  casos = dados[, .(casos = .N), by = ano_mes]
  casos[, pop := sum(pop$pop)]
  casos[, casos_100k := round(100000 * casos /pop)]
  casos = dcast(casos,  "" ~ ano_mes, value.var = "casos_100k")[,. := NULL]
  casos[, faixa_etaria := "Total"]

  ## Por faixa etaria
  casos_etaria = dados[, .(casos = .N), by = .(ano_mes, faixa_etaria)]
  casos_etaria[pop, pop := pop, on = "faixa_etaria"]
  casos_etaria[, casos_100k := round(100000 * casos /pop)]
  casos_etaria[, .(ano_mes, casos_100k)]
  casos_etaria = dcast(casos_etaria,  faixa_etaria ~ ano_mes, value.var = "casos_100k")

  ## Unindo
  casos = rbind(casos, casos_etaria)

  # Obitos
  ## Total
  obitos = dados[, .(obitos = .N), by = obito_ano_mes]
  obitos[, pop := sum(pop$pop)]
  obitos[, obitos_100k := round(100000 * obitos /pop)]
  obitos = obitos[!is.na(obito_ano_mes), .(obito_ano_mes, obitos_100k)]
  obitos = dcast(obitos,  "" ~ obito_ano_mes, value.var = "obitos_100k")[,. := NULL]
  obitos[, faixa_etaria := "Total"]

  ## Por faixa etaria
  obitos_etaria = dados[, .(obitos = .N), by = .(obito_ano_mes, faixa_etaria)]
  obitos_etaria[pop, pop := pop, on = "faixa_etaria"]
  obitos_etaria[, obitos_100k := round(100000 * obitos /pop)]
  obitos_etaria = obitos_etaria[!is.na(obito_ano_mes), .(faixa_etaria, obito_ano_mes, obitos_100k)]
  obitos_etaria = dcast(obitos_etaria,  faixa_etaria ~ obito_ano_mes, value.var = "obitos_100k")

  ## Unindo
  obitos = rbind(obitos, obitos_etaria)

  # Gera lista de resultados
  dados_finais = list(casos = casos,
       obitos = obitos)

  # Retorna Resultados
  return(dados_finais)
}
mellohenrique/codeplan.boletim2 documentation built on March 20, 2022, 3:15 a.m.