可能重复:
在 R 中的子集数据框中删除因子级别
我已经用某个因子水平对观察进行了子集化。在检查这是否已经完成时summary()
,仍然列出了级别,但观察值为零。他们不应该在子集期间消失吗?
可能重复:
在 R 中的子集数据框中删除因子级别
我已经用某个因子水平对观察进行了子集化。在检查这是否已经完成时summary()
,仍然列出了级别,但观察值为零。他们不应该在子集期间消失吗?
子集不会删除空级别。为什么会这样是因为它是一个特性。将其视为您的因素水平决定了事物的可能/潜在类别。如果你只取这些东西的一个子集,那么可能的东西类别不会改变,你的子集只是不包含它们中的任何一个。
如果要删除这些空级别,请参阅?droplevels
。
要使额外的级别消失,请drop=TRUE
在子集时使用:
newfactor <- oldfactor[indices, drop=TRUE]
顺便说一句,这不是默认设置的一个原因是无法比较不同级别的因素。因此,如果您想将因子与原始向量或向量的不同子集进行比较,则需要保留额外的水平。