Как расположить строки в произвольном порядке с помощью dplyr


Вы можете использовать следующий базовый синтаксис, чтобы упорядочить строки фрейма данных в произвольном порядке с помощью пакета dplyr в R:

 library (dplyr)

#arrange rows in custom order based on values in 'team' column
df %>%
  arrange(match(team, c(' C ', ' B ', ' D ', ' A ')), points)

В этом конкретном примере строки упорядочиваются в произвольном порядке C, B, D, A для значений столбца команды , а затем в соответствии со значениями столбца очков в порядке возрастания.

В следующем примере показано, как использовать этот синтаксис на практике.

Пример: как расположить строки в произвольном порядке с помощью dplyr

Предположим, у нас есть следующий кадр данных, в котором показаны очки, набранные баскетболистами разных команд:

 #create data frame
df <- data. frame (team=c('A', 'B', 'A', 'A', 'B', 'D', 'C', 'D', 'D', 'C'),
                 points=c(12, 20, 14, 34, 29, 22, 28, 15, 20, 13))

#view data frame
df

   team points
1 to 12
2 B 20
3 to 14
4 to 34
5 B 29
6 D 22
7 C 28
8 D 15
9 D 20
10 C 13

Если мы используем функцию Arrange() для сортировки строк на основе значений в столбце команды , то на основе значений в столбце точек функция Arrange() будет сортировать строки в алфавитном порядке по умолчанию. :

 library (dplyr)

#arrange rows in ascending order by team, then by points
df %>%
  arrange(team, points)

   team points
1 to 12
2 to 14
3 to 34
4 B 20
5 B 29
6 C 13
7 C 28
8 D 15
9 D 20
10 D 22

Линии перечислены в алфавитном порядке по командам , затем в порядке возрастания очков .

Однако предположим, что вместо этого мы хотим расположить строки в следующем порядке значений команд : C, B, D, A.

Для этого мы можем использовать функцию match() внутри функции Arrange() :

 library (dplyr)

#arrange rows in custom order based on 'team' column, then by 'points' column
df %>%
  arrange(match(team, c(' C ', ' B ', ' D ', ' A ')), points)

   team points
1 C 13
2 C 28
3 B 20
4 B 29
5 D 15
6 D 20
7 D 22
8 to 12
9 to 14
10 to 34

Строки расположены в заданном нами порядке (C, B, D, A) для столбца команды , а затем по столбцу очков .

Примечание № 1. Функция сопоставления получает индекс строки значений в столбце команды, затем функция упорядочения может выполнять сортировку на основе этих значений индекса.

Примечание № 2. Чтобы упорядочить значения по уменьшению значений, просто используйте вместо этого desc(points) .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в R:

Как организовать строки по группам с помощью dplyr
Как фильтровать уникальные значения с помощью dplyr
Как фильтровать по нескольким условиям с помощью dplyr

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *