Как отсортировать переменные по группам с помощью 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
Как справиться со связями в рейтинге
Мы можем использовать аргумент связывания.метод , чтобы указать, как нам следует обрабатывать связи при упорядочивании числовых значений.
rank(points, ties. method = ' average ')
Вы можете использовать один из следующих параметров, чтобы указать, как обрабатывать ссылки:
- среднее : (по умолчанию) присваивает каждому связанному элементу средний рейтинг (элементы, занимающие 3-е и 4-е места, получат ранг 3,5).
- first : присваивает первому связанному элементу самый низкий ранг (элементы, занимающие 3-ю и 4-ю позиции, получат ранги 3 и 4 соответственно)
- min : присваивает каждому связанному элементу самый низкий ранг (элементы, занимающие 3-е и 4-е места, получат ранг 3).
- max : присваивает каждому связанному элементу наивысший ранг (элементы, занимающие 3-е и 4-е места, получат ранг 4)
- Случайный : присваивает каждому связанному элементу случайный ранг (любой из элементов, занимающих 3-е и 4-е места, может получить любой ранг)
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные функции в dplyr:
Как выбрать первую строку по группе с помощью dplyr
Как рассчитать относительные частоты с помощью dplyr
Как перекодировать значения с помощью dplyr
Как заменить NA на Zero в dplyr