Uma tabela muito utilizada em epidemiologia é a comparação dos sintomas mais frequentes em relação aos grupos “Reagente” e “Não Reagente”
Carregando os pacotes necessários e lendo a base de dados com o pacote “rio”
# Pacotes necessários -----------------------------------------------------
library(rio) # Importa a base de dados
library(janitor) # Padroniza os nomes das variáveis
##
## Anexando pacote: 'janitor'
## Os seguintes objetos são mascarados por 'package:stats':
##
## chisq.test, fisher.test
library(gtsummary) # Cria tabelas
library(dplyr) # Manipula de dados
##
## 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
# Ler artigo com rio:import
sintomas <- import("Sintomas.csv")
A base de dados tem a seguinte estrutura
## Estrutura da base de dados
glimpse(sintomas)
## Rows: 291
## Columns: 16
## $ Protocolo <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, …
## $ Febre <chr> "VERDADEIRO", "VERDADEIRO", "FALSO", "FALSO", "FALSO", …
## $ Dordecabeca <chr> "VERDADEIRO", "VERDADEIRO", "VERDADEIRO", "VERDADEIRO",…
## $ Coriza <chr> "VERDADEIRO", "FALSO", "FALSO", "VERDADEIRO", "FALSO", …
## $ Tosse <chr> "VERDADEIRO", "VERDADEIRO", "FALSO", "VERDADEIRO", "FAL…
## $ Dordegarganta <chr> "VERDADEIRO", "FALSO", "VERDADEIRO", "FALSO", "FALSO", …
## $ Dornocorpo <chr> "VERDADEIRO", "VERDADEIRO", "VERDADEIRO", "VERDADEIRO",…
## $ Dorabdominal <chr> "VERDADEIRO", "FALSO", "FALSO", "FALSO", "FALSO", "FALS…
## $ Diarreia <chr> "VERDADEIRO", "VERDADEIRO", "VERDADEIRO", "VERDADEIRO",…
## $ Nausea <chr> "VERDADEIRO", "FALSO", "FALSO", "FALSO", "FALSO", "FALS…
## $ Vomito <chr> "VERDADEIRO", "FALSO", "VERDADEIRO", "FALSO", "FALSO", …
## $ Perdadeolfato <chr> "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "…
## $ Perdadepaladar <chr> "FALSO", "FALSO", "VERDADEIRO", "FALSO", "FALSO", "FALS…
## $ Faltadear <chr> "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "…
## $ Fadiga <chr> "VERDADEIRO", "FALSO", "FALSO", "FALSO", "FALSO", "FALS…
## $ Resultado <chr> "NÃO REAGENTE", "REAGENTE", "NÃO REAGENTE", "REAGENTE",…
As variáveis categóricas foram classificadas como caracter, mas para montar as tabelas preciso que elas sejam factor.
# Transforma para factor todas as variaveis caracter
sintomas <- sintomas %>%
mutate (across(where(is.character), (as.factor)))
# Usando o glimpse novamente
glimpse(sintomas)
## Rows: 291
## Columns: 16
## $ Protocolo <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, …
## $ Febre <fct> VERDADEIRO, VERDADEIRO, FALSO, FALSO, FALSO, VERDADEIRO…
## $ Dordecabeca <fct> VERDADEIRO, VERDADEIRO, VERDADEIRO, VERDADEIRO, FALSO, …
## $ Coriza <fct> VERDADEIRO, FALSO, FALSO, VERDADEIRO, FALSO, FALSO, VER…
## $ Tosse <fct> VERDADEIRO, VERDADEIRO, FALSO, VERDADEIRO, FALSO, FALSO…
## $ Dordegarganta <fct> VERDADEIRO, FALSO, VERDADEIRO, FALSO, FALSO, FALSO, FAL…
## $ Dornocorpo <fct> VERDADEIRO, VERDADEIRO, VERDADEIRO, VERDADEIRO, FALSO, …
## $ Dorabdominal <fct> VERDADEIRO, FALSO, FALSO, FALSO, FALSO, FALSO, FALSO, F…
## $ Diarreia <fct> VERDADEIRO, VERDADEIRO, VERDADEIRO, VERDADEIRO, FALSO, …
## $ Nausea <fct> VERDADEIRO, FALSO, FALSO, FALSO, FALSO, FALSO, FALSO, F…
## $ Vomito <fct> VERDADEIRO, FALSO, VERDADEIRO, FALSO, FALSO, FALSO, VER…
## $ Perdadeolfato <fct> FALSO, FALSO, FALSO, FALSO, FALSO, FALSO, FALSO, FALSO,…
## $ Perdadepaladar <fct> FALSO, FALSO, VERDADEIRO, FALSO, FALSO, FALSO, FALSO, F…
## $ Faltadear <fct> FALSO, FALSO, FALSO, FALSO, FALSO, FALSO, FALSO, FALSO,…
## $ Fadiga <fct> VERDADEIRO, FALSO, FALSO, FALSO, FALSO, FALSO, FALSO, F…
## $ Resultado <fct> NÃO REAGENTE, REAGENTE, NÃO REAGENTE, REAGENTE, NÃO REA…
Preparando as variáveis para elaborar a tabela
Para padronização dos nomes das variaveis utilizamos o pacote janitor.
## Padroniza os nomes das variaveis
# Pacote Janitor
sintomas <- clean_names(sintomas)
### Coloca os percentuais com uma casa decimal
list(
"tbl_summary-fn:percent_fun" = function(x)
sprintf(x * 100, fmt = '%#.1f')
) %>%
set_gtsummary_theme()
Por padrão a ordem de apresentação das respostas das variáveis é ordem alfabética, porém quando a variável categórica ordinal, precisamos definir a ordem que se deseja.
# Verificando a ordem da variável resultado
levels(sintomas$resultado) # sem ordem estabelecida
## [1] "NÃO REAGENTE" "REAGENTE"
# Estabelecendo ordem das variáveis ---------------------------------------
## Variavel RESULTADO
ordem_resultado <- c("REAGENTE", "NÃO REAGENTE")
sintomas$resultado <- factor(sintomas$resultado, levels = ordem_resultado,
ordered = TRUE)
# Nova ordem estabelecida
levels(sintomas$resultado) # com ordem estabelecida
## [1] "REAGENTE" "NÃO REAGENTE"
# Tabela Sintomas ---------------------------------------------------------
tabela1 <- sintomas %>%
select (febre:resultado) %>%
tbl_summary (
by = resultado,
statistic = list(all_categorical() ~ "{n} ({p}%)"),
digits = all_continuous() ~ 2,
type = list(febre:fadiga ~ "dichotomous"),
value = list(febre:fadiga ~"VERDADEIRO")
) %>%
modify_header(label ~ "**Sintomas**") %>%
bold_labels() %>% italicize_levels() %>%
add_overall(col_label = "Total", last = F) %>%
add_p(
pvalue_fun = function(x)
style_pvalue(x, digits = 3)
)
tabela1
Sintomas | Total1 | REAGENTE N = 1221 |
NÃO REAGENTE N = 1691 |
p-value2 |
---|---|---|---|---|
febre | 72 (24.7%) | 26 (21.3%) | 46 (27.2%) | 0.249 |
dordecabeca | 138 (47.4%) | 51 (41.8%) | 87 (51.5%) | 0.103 |
coriza | 85 (29.2%) | 35 (28.7%) | 50 (29.6%) | 0.868 |
tosse | 92 (31.6%) | 34 (27.9%) | 58 (34.3%) | 0.243 |
dordegarganta | 76 (26.1%) | 29 (23.8%) | 47 (27.8%) | 0.439 |
dornocorpo | 93 (32.0%) | 37 (30.3%) | 56 (33.1%) | 0.612 |
dorabdominal | 52 (17.9%) | 20 (16.4%) | 32 (18.9%) | 0.577 |
diarreia | 38 (13.1%) | 16 (13.1%) | 22 (13.0%) | 0.981 |
nausea | 34 (11.7%) | 9 (7.4%) | 25 (14.8%) | 0.052 |
vomito | 30 (10.3%) | 10 (8.2%) | 20 (11.8%) | 0.314 |
perdadeolfato | 28 (9.6%) | 8 (6.6%) | 20 (11.8%) | 0.132 |
perdadepaladar | 27 (9.3%) | 7 (5.7%) | 20 (11.8%) | 0.077 |
faltadear | 24 (8.2%) | 12 (9.8%) | 12 (7.1%) | 0.403 |
fadiga | 45 (15.5%) | 16 (13.1%) | 29 (17.2%) | 0.346 |
1 n (%) | ||||
2 Pearson’s Chi-squared test |