我可以像这样使用它们的索引重新排序因子的水平

factor(iris$Species,levels(iris$Species)[c(3:1)])


但是,如果我尝试按名称对相同因子进行重新排序,则无法正常工作:

factor(iris$Species,levels(iris$Species)[c("virginica", "versicolor", "setosa")])


有没有一种方法可以使用其名称重新排序因子的水平?

最佳答案

为什么不使用基本变量来提供新的级别名称:

factor(iris$Species, levels=c("virginica", "versicolor", "setosa"))


不过,请务必列出所有级别名称。否则,您将得到NA值。

但是,出于完整性考虑:如果您依赖一个因素中元素的顺序,则可能应该使用ordered而不是factor。那只是一个具有良好顺序的因子,或更准确地说,是因子级别之间的关系<。看到:

> ordered(1:3, levels=c('1', '3', '2'))
[1] 1 2 3
Levels: 1 < 3 < 2

关于r - 使用名称重新排序因子级别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20468420/

10-12 22:51