Як упорядкувати рядки в спеціальному порядку за допомогою 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() для сортування рядків на основі значень у стовпці team , то на основі значень у стовпці точок функція 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 : функція match отримує індекс рядка значень у стовпці team, потім функція arrange може сортувати на основі цих значень індексу.

Примітка №2 : щоб упорядкувати за зменшенням значень балів, просто використовуйте натомість desc(points) .

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові завдання в R:

Як упорядкувати рядки за групами за допомогою dplyr
Як фільтрувати унікальні значення за допомогою dplyr
Як фільтрувати за кількома умовами за допомогою dplyr

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

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