Как расположить строки в R


Часто вас может заинтересовать расположение строк фрейма данных в R в определенном порядке. К счастью, это легко сделать с помощью функцииrange () из библиотеки dplyr .

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

#create data frame
df <- data.frame(player = c('A', 'B', 'C', 'D', 'E', 'F', 'G'),
 points = c(12, 14, 14, 15, 20, 18, 29),
 assists = c(3, 5, 7, 8, 14, NA, 9))

#view data frame 
df

 player points assists
1 A 12 3
2 B 14 5
3 C 14 7
4 D 15 8
5 E 20 14
6 F 18 NA
7 G 29 9

Пример 1. Упорядочить по одному столбцу

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

library(dplyr)

df %>% arrange(points)

 player points assists
1 A 12 3
2 B 14 5
3 C 14 7
4 D 15 8
5 F 18 NA
6 E 20 14
7 G 29 9

Для сортировки по убыванию мы можем использовать функцию desc() :

df %>% arrange( desc (points))

 player points assists
1 G 29 9
2 E 20 14
3 F 18 NA
4 D 15 8
5 B 14 5
6 C 14 5
7 A 12 3

Обратите внимание, что NA будут отсортированы до конца, независимо от того, сортируете ли вы по возрастанию или по убыванию:

df %>% arrange(assists)

 player points assists
1 A 12 3
2 B 14 5
3 C 14 7
4 D 15 8
5 G 29 9
6 E 20 14
7 F 18 NA

df %>% arrange( desc (assists))

 player points assists
1 E 20 14
2 G 29 9
3 D 15 8
4 C 14 7
5 B 14 5
6 A 12 3
7 F 18 NA

Пример 2: Упорядочить по нескольким столбцам

Чтобы упорядочить строки по нескольким столбцам, мы можем просто указать больше имен столбцов в качестве аргументов:

#sort by points, then assists
df %>% arrange(points, assists)

 player points assists
1 A 12 3
2 B 14 5
3 C 14 7
4 D 15 8
5 F 18 NA
6 E 20 14
7 G 29 9

Мы также можем расположить строки по возрастанию одного столбца и по убыванию другого:

#sort by points ascending, then assists descending
df %>% arrange(points, desc (assists))

 player points assists
1 A 12 3
2 C 14 7
3 B 14 5
4 D 15 8
5 F 18 NA
6 E 20 14
7 G 29 9

Пример 3. Расположите строки в пользовательском порядке

Иногда вам также может понадобиться отсортировать строки в пользовательском порядке. Вы можете легко сделать это, используя фактор с определенными уровнями:

#sort by player with custom order
df %>% arrange( factor (player, levels = c('D', 'C', 'A', 'B', 'E', 'F', 'G')))

 player points assists
1 D 15 8
2 C 14 7
3 A 12 3
4 B 14 5
5 E 20 14
6 F 18 NA
7 G 29 9

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

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