Как сортировать по нескольким столбцам в R (с примерами)


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

Метод 1: используйте базу R

df[order(-df$column1, df$column2), ]

Способ 2: используйте dplyr

library(dplyr)

df %>%
 arrange( desc (column1), column2)

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

#create data frame
df <- data.frame(team=c('A', 'B', 'C', 'D', 'E', 'F', 'G'),
 points=c(90, 90, 93, 91, 91, 99, 85),
 assists=c(33, 28, 31, 39, 34, 40, 44))

#view data frame
df

 team points assists
1 A 90 33
2 B 90 28
3 C 93 31
4 D 91 39
5 E 91 34
6 F 99 40
7 G 85 44

Метод 1: используйте базу R

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

#sort by points descending, then by assists ascending
df[order(-df$points, df$assists), ]

 team points assists
6 F 99 40
3 C 93 31
5 E 91 34
4 D 91 39
2 B 90 28
1 A 90 33
7 G 85 44

Обратите внимание, что строки фрейма данных упорядочены по точкам от наибольшего к наименьшему, а затем по вспомогательным элементам от наименьшего к наибольшему.

Способ 2: используйте dplyr

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

library(dplyr)

df %>%
 arrange( desc (points), assists)

 team points assists
1 F 99 40
2 C 93 31
3 E 91 34
4 D 91 39
5 B 90 28
6 A 90 33
7 G 85 44

И снова строки фрейма данных упорядочены по точкам от наибольшего к наименьшему, а затем по ассистентам от наименьшего к наибольшему.

Примечание : Вы можете найти полную документацию по функции аранжировки() здесь .

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

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

Как отсортировать значения по алфавиту в R
Как отсортировать фрейм данных по дате в R

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.