2012-09-20 184 views

回答

14

子集不會刪除空白級別。爲什麼這是這種情況是它是一個功能。把它看作你的因素水平決定了東西的可能/潛在類別。如果你只採取這些東西的子集,東西的可能類別不會改變,你的子集不包含任何這些東西。

如果要刪除這些空白級別,請參閱?droplevels

+1

將'droplevels'應用於數據框架的唯一危險是,默認情況下,它將爲所有**因素(而不是僅針對焦點因子的水平)降低空值,這可能是不希望的。 –

+2

對,如果我想讓其他因素保持不變,對於單一因素,我會做'obj < - 變換(obj,fac = droplevels(fac))'。 –

8

爲了使多餘的層次消失,使用drop=TRUE子集化時:

newfactor <- oldfactor[indices, drop=TRUE] 

順便說一句,一個原因,這是不是默認的是,與不同層次的因素所不能比擬的。所以如果你想比較你的因素與原始矢量,或可能是一個不同的矢量子集,你需要保持額外的水平。