R Markdown

Modelo simples de script de análise descritiva dos casos de esporotricose animal, com base de dados fíctícia com fins de demonstração para seleção de pós doutorado no projeto “Estratégia Saúde da Família na Atenção Primária à Saúde (APS) no SUS”.

summary(cars)
##      speed           dist       
##  Min.   : 4.0   Min.   :  2.00  
##  1st Qu.:12.0   1st Qu.: 26.00  
##  Median :15.0   Median : 36.00  
##  Mean   :15.4   Mean   : 42.98  
##  3rd Qu.:19.0   3rd Qu.: 56.00  
##  Max.   :25.0   Max.   :120.00
library(readxl)
BANCO_REDCAP_testes_29_04_LIMPO <- read_excel("C:/Users/DEMSP/Desktop/BANCO_REDCAP_testes_29_04_LIMPO.xlsx")
dados<-read_excel("C:/Users/DEMSP/Desktop/BANCO_REDCAP_testes_29_04_LIMPO.xlsx")
View(dados)

Baixar pacotes

## 
## Anexando pacote: 'dplyr'
## Os seguintes objetos são mascarados por 'package:stats':
## 
##     filter, lag
## Os seguintes objetos são mascarados por 'package:base':
## 
##     intersect, setdiff, setequal, union

#Estatísticas numéricas

num_vars <- dados %>% select(where(is.numeric))

resumo_num <- num_vars %>% 
  summarise(across(everything(),
                   list(
                     n = ~sum(!is.na(.)),
                     media = ~mean(., na.rm = TRUE),
                     mediana = ~median(., na.rm = TRUE),
                     minimo = ~min(., na.rm = TRUE),
                     maximo = ~max(., na.rm = TRUE),
                     dp = ~sd(., na.rm = TRUE)
                   ), 
                   .names = "{.col}_{.fn}"))

#Frequências de variáveis categóricas

# Transformar em factor
dados <- dados %>% mutate(across(c(ESPECIE, SEXO, EVOLUÇÃO), as.factor))

# Frequências
table_especie <- dados %>% count(ESPECIE) %>% mutate(prop = round(100*n/sum(n),1)) %>% arrange(desc(n))
table_sexo <- dados %>% count(SEXO) %>% mutate(prop = round(100*n/sum(n),1)) %>% arrange(desc(n))
table_evolucao <- dados %>% count(EVOLUÇÃO) %>% mutate(prop = round(100*n/sum(n),1)) %>% arrange(desc(n))

#Completude do banco

completude <- dados %>% 
  summarise(across(everything(), ~round(sum(is.na(.))/n()*100, 2))) %>% 
  pivot_longer(everything(), names_to = "Variável", values_to = "Percentual_Nulos")

#Gráficos

# Histograma de idade
graf_idade <- ggplot(dados, aes(x = IDADE)) +
  geom_histogram(binwidth = 1, fill = "steelblue", color = "white") +
  labs(title = "Distribuição de Idade", x = "Idade (anos)", y = "Frequência") +
  theme_minimal()

# Barras categóricas
graf_especie <- ggplot(table_especie, aes(x = reorder(ESPECIE, -n), y = n, fill = ESPECIE)) +
  geom_bar(stat="identity") + labs(title="Distribuição por Espécie", x="Espécie", y="N") +
  theme_minimal() + theme(legend.position="none")

graf_sexo <- ggplot(table_sexo, aes(x = reorder(SEXO, -n), y = n, fill = SEXO)) +
  geom_bar(stat="identity") + labs(title="Distribuição por Sexo", x="Sexo", y="N") +
  theme_minimal() + theme(legend.position="none")

graf_evolucao <- ggplot(table_evolucao, aes(x = reorder(EVOLUÇÃO, -n), y = n, fill = EVOLUÇÃO)) +
  geom_bar(stat="identity") + labs(title="Distribuição por Evolução", x="Evolução", y="N") +
  theme_minimal() + theme(legend.position="none")