Як сортувати змінні за групою за допомогою dplyr
Ви можете використовувати наступний базовий синтаксис для групування змінних у dplyr:
df %>% arrange (group_var, numeric_var) %>% group_by (group_var) %>% mutate (rank = rank(numeric_var))
Наведені нижче приклади показують, як використовувати цей синтаксис на практиці з таким кадром даних:
#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
Приклад 1: рейтинг у порядку зростання
Наступний код показує, як сортувати очки, набрані гравцями в порядку зростання, згруповані за командами:
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
Приклад 2: рейтинг у порядку спадання
Ми також можемо класифікувати набрані бали в порядку спадання за групами, використовуючи знак мінус у функції 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
Як працювати зі зв’язками в рейтингу
Ми можемо використовувати аргумент tie.method , щоб вказати, як ми повинні обробляти зв’язки під час упорядкування числових значень.
rank(points, ties. method = ' average ')
Щоб указати, як обробляти посилання, можна скористатися одним із наведених нижче параметрів.
- середній : (за замовчуванням) надає кожному пов’язаному елементу середній рейтинг (предмети, які займають 3-е та 4-те місця, обидва отримають рейтинг 3,5)
- first : призначає першому пов’язаному елементу найнижчий ранг (елементи, які займають 3-ю та 4-ту позиції, отримають ранги 3 та 4 відповідно)
- min : призначає кожному пов’язаному елементу найнижчий ранг (елементи, які займають 3-е та 4-е місце, обидва отримають ранг 3)
- max : призначає кожному пов’язаному елементу найвищий ранг (елементи, які займають 3-е та 4-те місця, отримають ранг 4)
- random : призначає кожному зв’язаному елементу випадковий ранг (будь-який з елементів, рівний для 3-ї та 4-ї позицій, може отримати будь-який ранг)
Додаткові ресурси
У наступних посібниках пояснюється, як виконувати інші поширені функції в dplyr:
Як вибрати перший рядок групою за допомогою dplyr
Як обчислити відносні частоти за допомогою dplyr
Як перекодувати значення за допомогою dplyr
Як замінити NA на Zero в dplyr