R中的幽灵因子水平

ego*_*go_ 7 r subset r-factor

可能重复:
在R中的子集化数据帧中丢弃因子级别

我已经用一定的因子水平对观察进行了子集化.当检查是否已经完成时,summary()仍然列出了水平,但没有观察到.它们不应该在子集中消失吗?

Rei*_*son 15

子集不会丢弃空白级别.为什么会这样,这是一个功能.您可以将其视为因素水平决定事物的可能/潜在类别.如果你只需要这些东西的一个子集,可能的类的东西不改变,你的子集就是不包含任何人.

如果要删除这些空白级别,请参阅?droplevels.

  • 是的,对于单因素我会做`obj < - transform(obj,fac = droplevels(fac))`如果我想保持其他因素不变. (2认同)

Dav*_*son 8

要使额外的级别消失,请drop=TRUE在子集化时使用:

newfactor <- oldfactor[indices, drop=TRUE]
Run Code Online (Sandbox Code Playgroud)

顺便提一下,这不是默认的一个原因是不能比较具有不同等级的因素.因此,如果您想要将您的因子与原始向量进行比较,或者可能是向量的不同子集,则需要保留额外的级别.