A: как отсортировать фрейм данных с помощью атрибута row.names
Вы можете использовать следующие два метода для сортировки кадра данных в R с помощью атрибута row.names :
Способ 1. Сортировка с использованием символов row.names.
df[order( row.names (df)), ]
Способ 2. Сортировка с использованием числовых имен строк.
df[order(as. numeric (row. names (df))), ]
Следующие примеры показывают, как использовать каждый метод на практике.
Пример 1. Сортировка фрейма данных по именам строк символов
Предположим, у нас есть следующий кадр данных в 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
GA 99 33 30
CG 90 28 28
EF 86 31 24
FD 88 39 24
BC 95 34 28
Мы можем использовать следующий синтаксис для сортировки строк во фрейме данных в алфавитном порядке с помощью атрибута row.names :
#sort rows alphabetically using row.names
df[order( row.names (df)), ]
position points assists rebounds
GA 99 33 30
BC 95 34 28
CG 90 28 28
FD 88 39 24
EF 86 31 24
Строки сортируются от А до Я на основе значения имени строки.
Вы также можете использовать аргумент по убыванию=TRUE для сортировки от Z до A:
#sort rows from Z to A using row.names
df[order(row. names (df), decreasing= TRUE ), ]
position points assists rebounds
EF 86 31 24
FD 88 39 24
CG 90 28 28
BC 95 34 28
GA 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
1G 99 33 30
100G 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
1G 99 33 30
4 F 86 31 24
12 F 88 39 24
19 C 95 34 28
100G 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
100G 90 28 28
19 C 95 34 28
12 F 88 39 24
4 F 86 31 24
1G 99 33 30
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в R:
Как использовать sort(), order() и Rank() в R
Как сортировать по нескольким столбцам в R
Как отсортировать кадр данных по дате в R