Упорядочить фрейм данных по двум столбцам в R - PullRequest
14 голосов
/ 21 июля 2011

Я пытаюсь изменить порядок строк фрейма данных двумя факторами. Для первого фактора я доволен порядком заказа по умолчанию. Во-вторых, я бы хотел наложить свой собственный порядок строк. Вот некоторые фиктивные данные:

dat <- data.frame(apple=rep(LETTERS[1:10], 3), 
                  orange=c(rep("agg", 10), rep("org", 10), rep("fut", 10)),
                  pear=rnorm(30, 10), 
                  grape=rnorm(30, 10))

Я бы хотел заказать «яблоко» определенным образом:

appleOrdered <- c("E", "D", "J", "A", "F", "G", "I", "B", "H", "C")

Я пробовал это:

dat <- dat[with(dat, order(orange, rep(appleOrdered, 3))), ]

Но похоже, что "яблоко" расположено в случайном порядке. Какие-либо предложения? Благодаря.

Ответы [ 2 ]

11 голосов
/ 21 июля 2011

Изменение порядка уровней факторов:

dat[with(dat, order(orange, as.integer(factor(apple, appleOrdered)))), ]
11 голосов
/ 21 июля 2011

Попробуйте использовать коэффициент с уровнями в нужном порядке и функцией arrange из plyr:

dat$apple <- factor(dat$apple,levels=appleOrdered)
arrange(dat,orange,apple)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...