使用名称重新排序因子级别

luc*_*ano 2 r r-factor

我可以使用像这样的索引重新排序因子的级别

factor(iris$Species,levels(iris$Species)[c(3:1)])
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试按名称重新排序相同的因子,它不起作用:

factor(iris$Species,levels(iris$Species)[c("virginica", "versicolor", "setosa")])
Run Code Online (Sandbox Code Playgroud)

有没有办法使用他们的名字重新排序因子的级别?

Thi*_*ilo 6

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

factor(iris$Species, levels=c("virginica", "versicolor", "setosa"))
Run Code Online (Sandbox Code Playgroud)

但请务必列出所有级别名称.否则,你最终会得到NA价值观.

但是,为了完整性:如果依赖于因子中元素的顺序,则可能应该使用ordered而不是factor.这只是有序水平的一个因素,或者在数学上<是因子水平之间的关系.看到:

> ordered(1:3, levels=c('1', '3', '2'))
[1] 1 2 3
Levels: 1 < 3 < 2
Run Code Online (Sandbox Code Playgroud)