Уровни призрачного фактора в R

Возможный дубликат:
снижение уровней факторов во фрейме данных с подмножеством в R

Я разделил наблюдения с определенным уровнем факторов. При проверке того, было ли это сделано с summary(), уровни все еще были перечислены, но без наблюдений. Разве они не должны исчезнуть во время подмножества?


person ego_    schedule 20.09.2012    source источник


Ответы (2)


Подмножество не отбрасывает пустые уровни. Причина в том, что это особенность. Думайте об этом так, как ваши уровни факторов определяют возможные / потенциальные категории вещи. Если вы возьмете только подмножество этих вещей, возможные категории вещи не изменятся, ваше подмножество просто не содержит ни одной из них.

Если вы хотите отбросить эти пустые уровни, см. ?droplevels.

person Gavin Simpson    schedule 20.09.2012
comment
Единственная опасность применения droplevels к фрейму данных заключается в том, что по умолчанию он отбрасывает пустые уровни для всех факторов (а не только для уровней фокусного фактора), что может быть нежелательным. - person Ben Bolker; 21.09.2012
comment
Хорошо, для единственного фактора я бы сделал obj <- transform(obj, fac = droplevels(fac)), если бы я хотел оставить нетронутыми другие факторы. - person Gavin Simpson; 21.09.2012

Чтобы лишние уровни исчезли, используйте drop=TRUE при поднаборе:

newfactor <- oldfactor[indices, drop=TRUE]

Между прочим, одна из причин, по которой это не значение по умолчанию, заключается в том, что нельзя сравнивать факторы с разными уровнями. Поэтому, если вы хотите сравнить свои факторы с исходным вектором или, возможно, с другим подмножеством вектора, вам нужно сохранить дополнительные уровни.

person David Robinson    schedule 20.09.2012