forcats :: as_factor可以返回有序因子吗?

时间:2017-08-31 03:55:31

标签: r tidyverse forcats

来自as_factor的{​​{1}}可以返回有序因子吗?虽然我没有在GitHub page上看到它被报告为问题,但它似乎是一个缺失的功能。

我试过了:

forcats

如果我不能,那么有任何潜在的危险:

y <- forcats::as_factor(c("a", "z", "g"), ordered = TRUE)
is.ordered(y)
# FALSE

或者做得更好:

y <- ordered(forcats::as_factor(c("a", "z", "g")))

1 个答案:

答案 0 :(得分:1)

看来这确实是一种意想不到的行为。 forcats::as_factor强制它在出现时被排序,但不知何故不设置标志。但是将它与base::factor结合起来,并不需要明确指定排序,只需设置标志似乎工作正常。

y <- forcats::as_factor(c("a", "z", "g"))
y
[1] a z g
Levels: a z g

is.ordered(y)
[1] FALSE

k <- factor(y, c("a","z","g"), ordered = TRUE)
k
[1] a z g
Levels: a < z < g

is.ordered(k)
[1] TRUE

k2 <- factor( y, ordered = TRUE)
k2
[1] a z g
Levels: a < z < g

is.ordered(k2)
[1] TRUE

k3 <- factor(forcats::as_factor(c("a","g","z")), ordered = TRUE)
k3
[1] a g z
Levels: a < g < z

is.ordered(k3)
[1] TRUE