R/gera-faixa-etaria.R

Defines functions gera_faixa_etaria

Documented in gera_faixa_etaria

#' @title Gera dados de casos-obitos por faixa etaria
#'
#' @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
#'
#' @param dados data.frame com os dados de casos e obitos por data de cadastro e data de obito, respectivamente
#' @param par parametro que define se vai ser calculado dados de casos por faixa etaria ou de obito por faixa etaria
#'
#' @return uma lista com os dados de casos e obitos por faixa etaria
#'
#' @import data.table

gera_faixa_etaria = function(dados, par = c("cadastro", "data_obito")){
  # Limitando selecao de parametros
  par = match.arg(par, c("cadastro", "data_obito"))

  # Conformando ao tipo data.table
  dados = transforma_dt(dados)

  # Gerando fator de faixa etaria
  dados[, faixa_etaria := cut(as.numeric(idade), c(-100, 20, 30, 40, 50, 60, 70, 80, 999), right = FALSE)]

  # Calculando serie
  dados = dados[, .(var = .N), by = .(get(par), faixa_etaria)]

  # Corrigindo nome de variavel
  setnames(dados, "get", "data")

  # Criando tabela de var
  ## Definindo datas
  base = data.table(
    expand.grid(
      data = seq(min(dados$data, na.rm = TRUE), max(dados$data, na.rm = TRUE), by = "day"),
      faixa_etaria = unique(dados$faixa_etaria)))


  ## Unindo datas possiveis a var
  base[dados, `:=`(var = var), on = c("data", "faixa_etaria")]

  ## Alterando NA para 0
  base[, `:=`(var = ifelse(is.na(var), 0, var))]
  base = base[!is.na(faixa_etaria),]

  ## Colocando em formato wide
  resultado = dcast(base, data ~ faixa_etaria, value.var = "var", fill = 0)

  ## Corrigindo data
  resultado[, data := as.Date(data)]

  # Alterando nomes
  names(resultado) = c("data", "<20", "20-29", "30-39", "40-49", "50-59", "60-69", "70-79", ">80")

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