R中的鬼因子水平[重复]
Posted
技术标签:
【中文标题】R中的鬼因子水平[重复]【英文标题】:Ghost factor levels in R [duplicate] 【发布时间】:2012-09-12 20:47:50 【问题描述】:可能重复:dropping factor levels in a subsetted data frame in R
我已经用某个因子水平对观察进行了子集化。在检查是否已使用 summary()
完成此操作时,仍然列出了级别,但观察值为零。他们不应该在子集期间消失吗?
【问题讨论】:
【参考方案1】:子集不会删除空级别。为什么会这样是因为它是一个特性。将其视为您的因素水平决定了事物的可能/潜在类别。如果您只选取这些事物的一个子集,那么 事物 的可能类别不会改变,您的子集只是不包含它们中的任何一个。
如果您想删除这些空级别,请参阅?droplevels
。
【讨论】:
droplevels
应用于数据框的唯一危险是,默认情况下,它会为 所有 因素(而不仅仅是焦点因素的水平)丢弃空级别,这可能是不受欢迎的。
对,如果我想让其他因素保持不变,我会做obj <- transform(obj, fac = droplevels(fac))
的单一因素。【参考方案2】:
要使多余的级别消失,请在子集时使用drop=TRUE
:
newfactor <- oldfactor[indices, drop=TRUE]
顺便说一句,这不是默认值的一个原因是无法比较不同级别的因素。因此,如果您想将因子与原始向量或向量的不同子集进行比较,则需要保留额外的水平。
【讨论】:
以上是关于R中的鬼因子水平[重复]的主要内容,如果未能解决你的问题,请参考以下文章
`levels<-`(`*tmp*`, value = as.character(levels)) 中的错误:因子级别 [3] 重复