#' @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)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.