Olá.
Quais são as boas opções alternativas ao R Base para se construir Tabelas de Distribuição de Frequência? Há algum pacote que faça isso?
Olá.
Quais são as boas opções alternativas ao R Base para se construir Tabelas de Distribuição de Frequência? Há algum pacote que faça isso?
A seguir tem algumas possibilidades, mas creio que existem outras que eu não conheça. obs: a versão com o pacote qdap obteve valores diferentes pois ele remove os NAs.
library(magrittr, include.only = "%>%")
df <- dplyr::starwars
# com o pacote qdap
# install.packages("qdap")
qdap::dist_tab(df$sex) %>%
knitr::kable()
interval | freq | cum.freq | percent | cum.percent |
---|---|---|---|---|
female | 16 | 16 | 19.28 | 19.28 |
hermaphroditic | 1 | 17 | 1.20 | 20.48 |
male | 60 | 77 | 72.29 | 92.77 |
none | 6 | 83 | 7.23 | 100.00 |
# com janitor
library(janitor)
#>
#> Attaching package: 'janitor'
#> The following objects are masked from 'package:stats':
#>
#> chisq.test, fisher.test
df %>%
janitor::tabyl(sex) %>%
janitor::adorn_pct_formatting() %>%
dplyr::arrange(desc(n)) %>%
knitr::kable()
sex | n | percent | valid_percent |
---|---|---|---|
male | 60 | 69.0% | 72.3% |
female | 16 | 18.4% | 19.3% |
none | 6 | 6.9% | 7.2% |
NA | 4 | 4.6% | - |
hermaphroditic | 1 | 1.1% | 1.2% |
# com dplyr - precisamos montar a tabela :)
df %>%
dplyr::count(sex, sort = TRUE) %>%
dplyr::mutate(porc = n / sum(n) * 100) %>%
knitr::kable(digits = 2, col.names = c("Categoria", "Frequência absoluta", "Frequência relativa (%)"))
Categoria | Frequência absoluta | Frequência relativa (%) |
---|---|---|
male | 60 | 68.97 |
female | 16 | 18.39 |
none | 6 | 6.90 |
NA | 4 | 4.60 |
hermaphroditic | 1 | 1.15 |
Created on 2021-05-18 by the reprex package (v2.0.0)
Bea, o caminho que sei para dados em classe é esse:
df <- c(31,13,12,22,27,33,17,26,16,22,18,13,16,23,20,18,22,15,26,12, 20,21,23,27,30)
intervalos <- seq(10,35,5)
classes<-c("10-14","15-19","20-24","25-29","30-35")
tabela <- table(cut(df, breaks=intervalos, right=FALSE, labels=classes))
tabela
Vc conhece outra forma de criar tabelas de variáveis continuas em intervalos de classe?
Oi!
Quando eu preciso fazer isso também uso a função cut(), porém usando mutate mesmo.
library(magrittr, include.only = "%>%")
# cria base de exemplo
df <- tibble::tibble(idade = c(31,13,12,22,27,33,17,26,16,22,18,13,16,23,20,18,22,15,26,12, 20,21,23,27,30))
df %>%
dplyr::mutate(idade_quebras = cut(idade,breaks = seq(0,120,5)),
# as próximas linhas servem para arrumar a formatação das labels
# de forma mais geral, se mais idades forem adicionadas na base
# continuará funcionando bem :)
idade_quebras = as.character(idade_quebras),
idade_quebras = stringr::str_remove_all(idade_quebras, "\\(|\\]"),
idade_quebras = stringr::str_replace_all(idade_quebras, ",", "-")) %>%
# daqui em diante é apenas a tabela de frequência com o janitor
janitor::tabyl(idade_quebras) %>%
janitor::adorn_pct_formatting() %>%
dplyr::arrange(desc(n)) %>%
knitr::kable()
idade_quebras | n | percent |
---|---|---|
15-20 | 7 | 28.0% |
20-25 | 6 | 24.0% |
10-15 | 5 | 20.0% |
25-30 | 5 | 20.0% |
30-35 | 2 | 8.0% |
Created on 2021-05-19 by the reprex package (v2.0.0.9000)