Як сортувати змінні за групою за допомогою 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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *