R中的鬼因子水平[重复]

问题描述 投票:7回答:2

可能重复: dropping factor levels in a subsetted data frame in R

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

r subset r-factor
2个回答
15
投票

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

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


8
投票

为了使额外的级别消失,在子集化时使用drop=TRUE

newfactor <- oldfactor[indices, drop=TRUE]

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

© www.soinside.com 2019 - 2024. All rights reserved.