如何使向量中的特定因子具有比其他因子更高的水平?

时间:2013-12-26 20:16:07

标签: r

给定一个“b”始终是其中元素的向量,如何使“b”具有比所有其他因子更高的级别(不重新排序相对于彼此的其他因子)?

例如

> set.seed(1) # for reproducibility
> df<-data.frame(x=letters[c(2,sample(4,4,replace=TRUE))])
> df
  x
1 b
2 b
3 b
4 c
5 d
> levels(df$x)
[1] "b" "c" "d"

我不确定我是否正确地问这个问题,但我该如何做到这一点levels(df$x) = "c","d","b"

换句话说,我希望“b”始终显示在最后。

2 个答案:

答案 0 :(得分:4)

# Make some data
x <- c("a", "b", "c", "b", "a")
x <- factor(x)
> x
[1] a b c b a
Levels: a b c

我们可以使用我们想要的顺序重新指定因子

# save the current levels
lev <- levels(x)
# Find the one we want
# So change this to specify the level you want to be last
val <- which(lev == "b")
# Remake the factor specifying the order we want
x <- factor(x, levels = c(lev[-val], lev[val]))

> x
[1] a b c b a
Levels: a c b

答案 1 :(得分:0)

levels(df$x) <- c('c', 'd', 'b')不会在这里工作吗?