Ответ 1
Переупорядочение уровней факторов:
dat[with(dat, order(orange, as.integer(factor(apple, appleOrdered)))), ]
Я пытаюсь изменить порядок строк данных на два фактора. Для первого фактора я доволен порядком по умолчанию. Для второго фактора я хотел бы наложить свой собственный заказ на строки. Вот некоторые фиктивные данные:
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))), ]
Но похоже, что "яблоко" попадает в случайный порядок. Какие-либо предложения? Спасибо.
Переупорядочение уровней факторов:
dat[with(dat, order(orange, as.integer(factor(apple, appleOrdered)))), ]
Попробуйте использовать коэффициент с уровнями в нужном порядке и функцией arrange
от plyr
:
dat$apple <- factor(dat$apple,levels=appleOrdered)
arrange(dat,orange,apple)