Como calcular frequências relativas usando dplyr
Muitas vezes você pode querer calcular as frequências/proporções relativas de valores em uma ou mais colunas de um quadro de dados em R.
Felizmente, isso é fácil de fazer usando funções do pacote dplyr . Este tutorial mostra como usar essas funções para calcular frequências relativas no seguinte quadro de dados:
#create data frame df <- data.frame(team = c('A', 'A', 'A', 'B', 'B', 'B', 'B'), position = c('G', 'F', 'F', 'G', 'G', 'G', 'F'), points = c(12, 15, 19, 22, 32, 34, 39)) #view data frame df team position points 1 AG 12 2 AF15 3 FY 19 4 BG 22 5 BG 32 6 BG 34 7 BF 39
Exemplo 1: Frequência relativa de uma variável
O código a seguir mostra como calcular a frequência relativa de cada equipe no quadro de dados:
library(dplyr) df %>% group_by (team) %>% summarize (n = n()) %>% mutate (freq = n / sum(n)) # A tibble: 2 x 3 team n freq 1 to 3 0.429 2 B 4 0.571
Isso nos diz que a Equipe A é responsável por 42,9% de todas as linhas no quadro de dados, enquanto a Equipe B é responsável pelos 57,1% restantes das linhas. Observe que juntos eles somam 100%.
Relacionado: O guia completo: como agrupar e resumir dados em R
Exemplo 2: Frequência relativa de diversas variáveis
O código a seguir mostra como calcular a frequência relativa de posições por equipe:
library(dplyr) df %>% group_by (team, position) %>% summarize (n = n()) %>% mutate (freq = n / sum(n)) # A tibble: 4 x 4 # Groups: team [2] team position n freq 1 AF 2 0.667 2 AG 1 0.333 3 BF 1 0.250 4 BG 3 0.750
Isso nos diz que:
- 66,7% dos jogadores do time A estão na posição F.
- 33,3% dos jogadores do time A estão na posição G.
- 25,0% dos jogadores do time A estão na posição F.
- 75,0% dos jogadores do time B estão na posição G.
Relacionado: Como usar Mutate para criar novas variáveis em R
Exemplo 3: Mostrar frequências relativas como porcentagens
O código a seguir mostra como calcular a frequência relativa de posições por equipe e como exibir essas frequências relativas como porcentagens:
library(dplyr) df %>% group_by (team, position) %>% summarize (n = n()) %>% mutate (freq = paste0(round(100 * n/sum(n), 0), ' % ')) # A tibble: 4 x 4 # Groups: team [2] team position n freq 1 AF 2 67% 2 GA 1 33% 3 BF 1 25% 4 BG 3 75%
Você pode encontrar mais tutoriais de R aqui .