有人可以解释为什么levels()显示三个因子级别,而你可以看到该向量只有两个?
> str(walk.df)
'data.frame': 10 obs. of 4 variables:
$ walker : Factor w/ 3 levels "1","2","3": 1 1 1 1 1 2 2 2 2 2
> walk.df$walker
[1] 1 1 1 1 1 2 2 2 2 2
Levels: 1 2 3
我想提取一个关卡的矢量,我认为这是正确的方法,但正如你所看到的那样,三个偷偷摸摸的东西弄乱了我的功能。
> as.numeric(levels(walk.df$walker))
[1] 1 2 3
答案 0 :(得分:9)
可能walk.df是3个级别的因子变量的子集。 比方说,
a<-factor(1:3)
b<-a[1:2]
然后b有3个级别。
降低额外等级的简单方法是:
b<-a[1:2, drop=T]
或者如果您无法访问原始变量,
b<-factor(b)
答案 1 :(得分:0)
您可以为包含两个级别的因子分配多个因子级别:
> set.seed(1234)
> x <- round(runif(10, 1, 2))
> x
[1] 1 2 2 2 2 2 1 1 2 2
> y <- factor(x)
> levels(y)
[1] "1" "2"
> levels(y) <- c("1", "2", "3")
> y
[1] 1 2 2 2 2 2 1 1 2 2
Levels: 1 2 3
甚至根本没有水平:
> p <- NA
> q <- factor(p)
> levels(q)
character(0)
> levels(q) <- c("1", "2", "3")
> q
[1] <NA>
Levels: 1 2 3