提取因子水平时的意外行为

Rom*_*rik 3 r levels

有人可以解释为什么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
Run Code Online (Sandbox Code Playgroud)

我想提取一个关卡矢量,我认为这是正确的方法,但正如你所看到的,那里有三个偷偷摸摸的东西弄乱了我的功能.

> as.numeric(levels(walk.df$walker))
[1] 1 2 3
Run Code Online (Sandbox Code Playgroud)

koh*_*ske 9

可能walk.df是3个级别的因子变量的子集.说,

a<-factor(1:3)
b<-a[1:2]
Run Code Online (Sandbox Code Playgroud)

然后b有3个级别.

降低额外水平的简单方法是:

b<-a[1:2, drop=T]
Run Code Online (Sandbox Code Playgroud)

或者如果您无法访问原始变量,

b<-factor(b)
Run Code Online (Sandbox Code Playgroud)