Определить порядок факторных данных - PullRequest
1 голос
/ 04 июня 2019

Я изо всех сил пытаюсь изменить порядок моих факторных данных. Используя в качестве примера набор данных mtcars, я использую следующий код для упорядочения данных по 'cyl'.

library(dplyr)
arrange (mtcars, cyl)

Это упорядочивает данные как cyl = 4, 6, 8, соответственно, но как я могу изменить этот порядок, чтобы быть 4, 8, 6, соответственно? Я пытался sort, используя c(4, 8, 6), но не повезло. Должно быть какое-то простое решение. Спасибо.

Ответы [ 2 ]

2 голосов
/ 04 июня 2019

Один из вариантов - определить cyl как factor с levels на основе наших предпочтений, а затем использовать arrange

library(dplyr)

mtcars %>%
  mutate(cyl = factor(cyl, levels = c(4, 8, 6))) %>%
  arrange(cyl)

То же самое с использованием базы R будет

df <- transform(mtcars, cyl = factor(cyl, levels = c(4, 8, 6)))
df[order(df$cyl), ]

Или другой вариант - использовать match, а затем order

mtcars[order(match(mtcars$cyl, c(4, 8, 6))), ]
1 голос
/ 04 июня 2019

Использование data.table

library(data.table)
as.data.table(mtcars)[order(factor(cyl, levels = c(4, 8, 6)))]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...