#' @title Gera dados de casos-obitos por 100k
#'
#' @description Avalia os dados de casos e obitos da SSP e gera um data.table com as informacoes de variacao de casos e obitos semanais por UF
#'
#' @param dados data.frame ou data.table com os dados de cadastro da SSP
#'
#' @return um data.table com os dados de crescimento de casos e obitos semanais por UF
#'
#' @import data.table
gera_crescimento_ras = function(dados){
# Conformando ao tipo data.table
dados = transforma_dt(dados)
# Definindo parametros
top = 6
# Gerando serie de casos
casos = dados[,.(casos = .N), by = .(cadastro, localidade = ra)]
# Gerando serie de obitos
obitos = dados[!is.na(data_obito), .(obitos = .N), by = .(data_obito, localidade = ra)]
# Renomeando variavel
data.table::setnames(casos, "cadastro", "data")
data.table::setnames(obitos, "data_obito", "data")
# Alterando formato da data
casos[, data := as.Date(data)]
obitos[, data := as.Date(data)]
# Criando tabela de datas
base = data.table(
expand.grid(data = seq(as.Date("2021-01-01"), max(dados$cadastro), by = "day"),
localidade = unique(casos$localidade)))
# Gerando dados de semana
base[, semana := cumsum(weekdays(data) == weekdays(max(data + 1))), by = localidade]
# Colocando dados de semana na serie
dados = base[casos, `:=`(casos = casos), on = .(data, localidade)]
dados = dados[obitos, `:=`(obitos = obitos), on = .(data, localidade)]
dados = dados[,`:=`(casos = ifelse(is.na(casos), 0, casos),
obitos = ifelse(is.na(obitos), 0, obitos))]
# Serie de dados
dados = dados[, .(casos = sum(casos),
obitos = sum(obitos),
data = max(data)), by = .(semana, localidade)]
# Crescimento de casos nas ultimas duas semanas
dados_filtrando = dados[, `:=`(crescimento_casos = casos + shift(casos, 1),
crescimento_obitos = obitos + shift(obitos, 1)), by = localidade]
# Removendo datas na
dados = dados[!is.na(data),]
# Considerando apenas localidades validas
dados_filtrando = dados_filtrando[semana == max(semana, na.rm = TRUE) & !localidade %in% c("Outros Estados", "NA", "Distrito Federal", "Não Informado"), ]
# Filtra ras com maior crescimento de casos e obitos
top_casos = dados_filtrando[crescimento_casos %in% sort(dados_filtrando$crescimento_casos, decreasing = TRUE)[1:top],]
top_obitos = dados_filtrando[crescimento_obitos %in% sort(dados_filtrando$crescimento_obitos, decreasing = TRUE)[1:top],]
# Colocando em forma de data.tables
top_casos[,fator_casos := forcats::fct_reorder(localidade, crescimento_casos, .desc = TRUE)]
top_obitos[,fator_obitos := forcats::fct_reorder(localidade, crescimento_obitos, .desc = TRUE)]
top_casos = top_casos[,.(localidade, fator_casos)]
top_obitos = top_obitos[,.(localidade, fator_obitos)]
# Adicionando localidades com maior crescimento de obitos e casos
dados = dados[top_casos, fator_casos := fator_casos, on = "localidade"]
dados = dados[top_obitos, fator_obitos := fator_obitos, on = "localidade"]
# Filtrando apenas dados das ras com maior crescimento de casos e obitos
dados = dados[semana %in% (max(semana, na.rm = TRUE)-3):max(semana, na.rm = TRUE) & (!is.na(fator_casos) | !is.na(fator_obitos) == TRUE),]
# Definindo fator
dados[, data_inicial := data - 6]
setorder(dados, data)
vetor = paste0(strftime(dados$data_inicial, format = "%d/%m/%Y"),
" até\n",
strftime(dados$data, format = "%d/%m/%Y"))
dados$fator = factor(vetor, levels = unique(vetor), ordered = TRUE)
# Removendo fator obito de localidades sem obitos
dados_localidades_obitos = dados[, .(obitos = sum(obitos)), by = localidade]
localidades_sem_obitos = dados_localidades_obitos[obitos == 0,]$localidade
levels(dados$fator_obitos)[levels(dados$fator_obitos) %in% localidades_sem_obitos] = NA
# Retorna Resultados
return(dados)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.