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 .

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *