Jak sortować zmienne według grup za pomocą dplyr
Do grupowania zmiennych w dplyr można użyć następującej podstawowej składni:
df %>% arrange (group_var, numeric_var) %>% group_by (group_var) %>% mutate (rank = rank(numeric_var))
Poniższe przykłady pokazują, jak zastosować tę składnię w praktyce z następującą ramką danych:
#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
Przykład 1: Ranking w kolejności rosnącej
Poniższy kod pokazuje, jak posortować punkty zdobyte przez graczy w kolejności rosnącej, pogrupowane według drużyn:
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
Przykład 2: Ranking w kolejności malejącej
Możemy także sklasyfikować zdobyte punkty w kolejności malejącej według grup, używając znaku ujemnego w funkcji 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
Jak sobie radzić z powiązaniami w rankingu
Możemy użyć argumentu tie.method , aby określić, jak powinniśmy traktować remisy podczas porządkowania wartości liczbowych.
rank(points, ties. method = ' average ')
Aby określić sposób obsługi łączy, możesz użyć jednej z następujących opcji:
- średnia : (domyślnie) Nadaje każdemu połączonemu elementowi średnią rangę (obiekty z 3. i 4. miejscem otrzymają rangę 3,5)
- pierwszy : przypisuje pierwszy połączony element do najniższej rangi (elementy zajmujące pozycje 3 i 4 otrzymają odpowiednio rangi 3 i 4)
- min : Przypisuje każdemu połączonemu przedmiotowi najniższą rangę (obiekty o randze 3 i 4 otrzymają rangę 3)
- max : Przypisuje każdemu połączonemu przedmiotowi najwyższą rangę (obiekty o randze 3 i 4 otrzymają rangę 4)
- losowy : przypisuje każdemu remisującemu elementowi losową rangę (każdy z elementów remisujących na 3. i 4. miejscu może otrzymać dowolną rangę)
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe funkcje w dplyr:
Jak wybrać pierwszy wiersz według grupy za pomocą dplyr
Jak obliczyć częstotliwości względne za pomocą dplyr
Jak przekodować wartości za pomocą dplyr
Jak zamienić NA na Zero w dplyr