R/utils.R

Defines functions gera_media_movel transforma_dt

Documented in gera_media_movel transforma_dt

#' @title Transforma em data.table
#'
#' @description Transoforma um data.frame em data.table
#'
#' @param dados um data.frame a ser convertido em data.table
#'
#' @return Os dados em formato data.table
#'
#' @import data.table


transforma_dt = function(dados){
  if(!is.data.table(dados)){
    dados = as.data.table(dados)
  }

  # Retorna resultados
  return(dados)
}

#' @title Gera media movel
#'
#' @description Gera media movel de 7 e 14 dias para dados de casos por cadastro ou primeiros sintomas ou para dados de obitos por data de obito ou data de notificacao
#'
#' @param dados um data.frame a ser convertido em data.table
#' @param datas um data.table com as datas a serem consideradas
#' @param medida o nome da variavel em caractere a ser considerado, nao necessario nos dados de obito por notificacao do ministerio da saude
#'
#' @return data.table com media.movel da variavel de interesse
#'
#' @import data.table

gera_media_movel <- function(dados, datas, medida = c("cadastro", "primeiros_sintomas", "data_obito"), ms = FALSE){
  # Conformando ao tipo data.table
  medida = match.arg(medida)
  dados = transforma_dt(dados)
  datas = transforma_dt(datas)


  if(ms){ # Se dados do ministerio da saude, seleciona colunas adequadas e corrige formato de data
    dados = dados[, .(data, casos = obitosNovos)]
    dados = dados[, data := as.Date(data)]
  } else { # Caso contrario, cria-se serie de casos ou obitos para a medida considerada
    dados = merge(datas, dados[,data := as.Date(get(medida))][,.(casos = .N), by = data], all.x = TRUE)[, casos := ifelse(is.na(casos), 0, casos)]}

  # Calcula-se a media movel
  dados[,`:=`(
    `Média móvel de 7 dias` = frollmean(casos, 7, align = "right", fill = NA),
    `Média móvel de 14 dias` = frollmean(casos, 14, align = "right", fill = NA))]

  # Coloca em formato tidy
  dados = melt(dados, id.vars = c("data", "casos"), value.name = "valor", variable.name = "tipo")

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