Como calcular porcentagem por grupo em r (com exemplo)


Você pode usar a seguinte sintaxe para calcular uma porcentagem por grupo em R:

 library (dplyr)

df %>%
  group_by(group_var) %>%
  mutate(percent = value_var/sum(value_var))

O exemplo a seguir mostra como usar essa sintaxe na prática.

Exemplo: Calcular porcentagem por grupo em R

Suponha que temos o seguinte quadro de dados que mostra os pontos marcados por jogadores de basquete de diferentes times:

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'),
                 points=c(12, 29, 34, 14, 10, 11, 7, 36, 34, 22))

#view data frame
df

   team points
1 to 12
2 to 29
3 to 34
4 to 14
5 to 10
6 B 11
7 B 7
8 B 36
9 B 34
10 B 22

Podemos usar o código a seguir para criar uma nova coluna no data frame que exibe a porcentagem do total de pontos marcados, agrupados por equipe:

 library (dplyr)

#calculate percentage of points scored, grouped by team
df %>%
  group_by(team) %>%
  mutate(percent = points/sum(points))

# A tibble: 10 x 3
# Groups: team [2]
   team points percent
        
 1 to 12 0.121 
 2 A 29 0.293 
 3 A 34 0.343 
 4 A 14 0.141 
 5 A 10 0.101 
 6 B 11 0.1   
 7 B 7 0.0636
 8 B 36 0.327 
 9 B 34 0.309 
10 B 22 0.2 

A coluna Porcentagem indica a porcentagem do total de pontos marcados por este jogador em sua equipe.

Por exemplo, os jogadores do Time A marcaram um total de 99 pontos.

Portanto, o jogador na primeira linha do quadro de dados que marcou 12 pontos marcou um total de 12/99 = 12,12% do total de pontos do Time A.

Da mesma forma, o jogador da segunda linha no banco de dados que marcou 29 pontos marcou um total de 29/99 = 29,29% do total de pontos para o Time A.

E assim por diante.

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras tarefas comuns em R:

Como contar valores únicos por grupo em R
Como calcular estatísticas resumidas por grupo em R
Como calcular soma por grupo em R

Add a Comment

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