R/gera-series-cadastro.R

Defines functions gera_series_cadastro

Documented in gera_series_cadastro

#' @title Gera dados de series segundo a base de cadastro
#'
#' @description Avalia os dados de cadastro e gera uma media movel de casos e obitos para estas series
#'
#' @param dados um data.frame com dados de cadastro da SSP
#' @param faixa_etaria Uma série de inteiros de 15 a 29, 30 a 59 e 60 a 200 com as faixas etarias consideradas
#'
#' @return um data.table com os dados as medias móveis de casos e obitos segundo dados de cadastro
#'
#' @import data.table

gera_series_cadastro = function(dados, faixa_etaria) {
  # Conformando ao tipo data.table
  dados = transforma_dt(dados)

  # Checa se a variavel faixa_etaria foi colocada corretamente
  if (!(identical(faixa_etaria, 15:29) | identical(faixa_etaria, 30:59) | identical(faixa_etaria, 60:200))) {
    stop("Escolha um dos vetores 15:29, 30:59 ou 60:200 para faixa_etaria")}

  # Filtra os dados para a faixa_etaria selecionada
  dados_filtrados = dados[Idade %in% faixa_etaria,]

  # Gera a serie de casos
  casos = dados_filtrados[, .(.N), by = cadastro]

  # Gera serie de obitos
  obitos = dados_filtrados[!is.na(dataobito), .(.N), by = dataobito]

  # Gera base de datas para a tabela que sera contruida
  series = data.table(data = seq(min(dados$cadastro, na.rm = TRUE),
                                             max(dados$cadastro, na.rm = TRUE), by = "day"))

  # Une a base a serie de casos
  series[casos, casos := N, on = .(data = cadastro)]

  # Une a serie de obitos a base
  series[obitos, obitos := N, on = .(data = dataobito)]

  # Substitui os valores NA por zero
  series[, `:=`(casos = ifelse(is.na(casos), 0, casos),
                obitos = ifelse(is.na(obitos), 0, obitos))]

  # Gera média móvel
  series[,`:=`(mm_casos = frollmean(casos, 7, align = "right"),
               mm_obitos = frollmean(obitos, 7, align = "right"))]

  # Remove colunas nao usadas
  series = series[, `:=`(casos = NULL,
                         obitos = NULL)]

  # Altera a nomenclatura
  if (max(faixa_etaria) == 29){
    setnames(series, c("mm_casos", "mm_obitos"), c("mm_casos_29", "mm_obitos_29"))
  } else if (max(faixa_etaria) == 59) {
    setnames(series, c("mm_casos", "mm_obitos"), c("mm_casos_3059", "mm_obitos_3059"))
  } else {
    setnames(series, c("mm_casos", "mm_obitos"), c("mm_casos_60", "mm_obitos_60"))
  }

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