Вы можете использовать следующие два метода для сортировки фрейма данных в R с помощью атрибута row.names :
Метод 1: сортировка с использованием символов row.names
df[order(row.names(df)), ]
Метод 2: сортировка с использованием числовых row.names
df[order(as. numeric (row.names(df))), ]
В следующих примерах показано, как использовать каждый метод на практике.
Пример 1. Сортировка фрейма данных с использованием символов row.names
Предположим, у нас есть следующий фрейм данных в R:
#create data frame
df <- data.frame(position=c('G', 'G', 'F', 'F', 'C'),
points=c(99, 90, 86, 88, 95),
assists=c(33, 28, 31, 39, 34),
rebounds=c(30, 28, 24, 24, 28))
#set row names of data frame
row.names(df) <- c('A', 'C', 'E', 'D', 'B')
#view data frame
df
position points assists rebounds
A G 99 33 30
C G 90 28 28
E F 86 31 24
D F 88 39 24
B C 95 34 28
Мы можем использовать следующий синтаксис для сортировки строк фрейма данных в алфавитном порядке с помощью атрибута row.names :
#sort rows alphabetically using row.names
df[order(row.names(df)), ]
position points assists rebounds
A G 99 33 30
B C 95 34 28
C G 90 28 28
D F 88 39 24
E F 86 31 24
Строки сортируются от А до Я на основе значения имени строки.
Вы также можете использовать аргумент по убыванию = ИСТИНА для сортировки от Z до A:
#sort rows from Z to A using row.names
df[order(row.names(df), decreasing= TRUE ), ]
position points assists rebounds
E F 86 31 24
D F 88 39 24
C G 90 28 28
B C 95 34 28
A G 99 33 30
Пример 2. Сортировка фрейма данных с использованием числовых имен строк.
Предположим, у нас есть следующий фрейм данных в R:
#create data frame
df <- data.frame(position=c('G', 'G', 'F', 'F', 'C'),
points=c(99, 90, 86, 88, 95),
assists=c(33, 28, 31, 39, 34),
rebounds=c(30, 28, 24, 24, 28))
#set row names of data frame
row.names(df) <- c(1, 100, 4, 12, 19)
#view data frame
df
position points assists rebounds
1 G 99 33 30
100 G 90 28 28
4 F 86 31 24
12 F 88 39 24
19 C 95 34 28
Мы можем использовать следующий синтаксис для сортировки строк фрейма данных с помощью атрибута row.names :
#sort by row names from smallest to largest
df[order(as. numeric (row.names(df))), ]
position points assists rebounds
1 G 99 33 30
4 F 86 31 24
12 F 88 39 24
19 C 95 34 28
100 G 90 28 28
Мы также могли бы использовать алгоритм убывания = TRUE для сортировки от наибольшего к наименьшему:
#sort by row names from largest to smallest
df[order(as. numeric (row.names(df)), decreasing= TRUE ), ]
position points assists rebounds
100 G 90 28 28
19 C 95 34 28
12 F 88 39 24
4 F 86 31 24
1 G 99 33 30
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в R:
Как использовать sort(), order() и rank() в R
Как сортировать по нескольким столбцам в R
Как отсортировать фрейм данных по дате в R