Como classificar variáveis por grupo usando dplyr
Você pode usar a seguinte sintaxe básica para agrupar variáveis no dplyr:
df %>% arrange (group_var, numeric_var) %>% group_by (group_var) %>% mutate (rank = rank(numeric_var))
Os exemplos a seguir mostram como usar essa sintaxe na prática com o seguinte quadro de dados:
#create data frame df <- data. frame (team = c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'), points = c(12, 28, 19, 22, 32, 45, 22, 28, 13, 19), rebounds = c(5, 7, 7, 12, 11, 4, 10, 7, 8, 8)) #view data frame df team points rebounds 1 to 12 5 2 to 28 7 3 to 19 7 4 A 22 12 5 B 32 11 6 B 45 4 7 B 22 10 8 C 28 7 9 C 13 8 10 C 19 8
Exemplo 1: Classificação em ordem crescente
O código a seguir mostra como ordenar os pontos marcados pelos jogadores em ordem crescente, agrupados por equipe:
library (dplyr) #rank points scored, grouped by team df %>% arrange (team, points) %>% group_by (team) %>% mutate (rank = rank(points)) # A tibble: 10 x 4 # Groups: team [3] team points rebounds rank 1 A 12 5 1 2 A 19 7 2 3 A 22 12 3 4 A 28 7 4 5 B 22 10 1 6 B 32 11 2 7 B 45 4 3 8 C 13 8 1 9 C 19 8 2 10 C 28 7 3
Exemplo 2: Classificação em ordem decrescente
Também podemos classificar os pontos obtidos em ordem decrescente por grupo, utilizando um sinal negativo dentro da função Rank() :
library (dplyr) #rank points scored in reverse, grouped by team df %>% arrange (team, points) %>% group_by (team) %>% mutate (rank = rank(-points)) # A tibble: 10 x 4 # Groups: team [3] team points rebounds rank 1 to 12 5 4 2 A 19 7 3 3 A 22 12 2 4 A 28 7 1 5 B 22 10 3 6 B 32 11 2 7 B 45 4 1 8 C 13 8 3 9 C 19 8 2 10 C 28 7 1
Como lidar com empates na classificação
Podemos usar o argumento tie.method para especificar como devemos lidar com empates ao ordenar valores numéricos.
rank(points, ties. method = ' average ')
Você pode usar uma das seguintes opções para especificar como lidar com links:
- média : (Padrão) Dá a cada item vinculado a classificação média (os itens classificados em 3º e 4º receberiam uma classificação de 3,5)
- primeiro : Atribui o primeiro elemento vinculado à classificação mais baixa (os elementos classificados na 3ª e 4ª posições receberiam as classificações 3 e 4, respectivamente)
- min : Atribui cada item vinculado à classificação mais baixa (os itens classificados em 3º e 4º receberiam uma classificação de 3)
- max : atribui a cada item vinculado a classificação mais alta (os itens classificados em 3º e 4º receberiam uma classificação de 4)
- random : atribui a cada elemento empatado uma classificação aleatória (qualquer um dos elementos empatados na 3ª e 4ª posição pode receber qualquer uma das classificações)
Recursos adicionais
Os tutoriais a seguir explicam como executar outras funções comuns no dplyr:
Como selecionar a primeira linha por grupo usando dplyr
Como calcular frequências relativas usando dplyr
Como recodificar valores usando dplyr
Como substituir NA por Zero no dplyr