11

可能重复:
在 R 中的子集数据框中删除因子级别

我已经用某个因子水平对观察进行了子集化。在检查这是否已经完成时summary(),仍然列出了级别,但观察值为零。他们不应该在子集期间消失吗?

4

2 回答 2

15

子集不会删除空级别。为什么会这样是因为它是一个特性。将其视为您的因素水平决定了事物的可能/潜在类别。如果你只取这些东西的一个子集,那么可能的东西类别不会改变,你的子集只是不包含它们中的任何一个。

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

于 2012-09-20T13:19:00.777 回答
9

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

newfactor <- oldfactor[indices, drop=TRUE]

顺便说一句,这不是默认设置的一个原因是无法比较不同级别的因素。因此,如果您想将因子与原始向量或向量的不同子集进行比较,则需要保留额外的水平。

于 2012-09-20T13:20:27.133 回答