R: Как сортировать фрейм данных с помощью атрибута row.names


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

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