Вы можете использовать один из следующих методов для сортировки фрейма данных по нескольким столбцам в 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