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

标签 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

我想提取一个关卡向量,我认为这是正确的方法,但正如你所见,那里的三个偷偷摸摸弄乱了我的功能。

> as.numeric(levels(walk.df$walker))
[1] 1 2 3

最佳答案

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

a<-factor(1:3)
b<-a[1:2]

那么 b 有 3 个级别。

降低额外等级的简单方法是:

b<-a[1:2, drop=T]

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

b<-factor(b)

关于r - 提取因子水平时的意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2756929/

相关文章:

r - 如何删除小标题中的偏移行?

r - 按组划分的因素水平

r - 子集数据框并保留行和列名称

rstudioapi::viewer 编程删除选项

r - 子集有向图

r - 更改级别时如何保持 NA

从列表提取中删除级别到数据帧

python - Discord Python 机器人 : Levels and EXP System

r - R语言中带有拟合回归3D平面的3D散点图