1

我正在从 R 中的数据框中删除一个变量;此后检查输出如下:

步骤1:

str(bill_11)
'data.frame':   403771 obs. of  11 variables:

$ Month          : Factor w/ 4 levels "Apr-12","Feb-12",..: 2 2 2 2 2 2 2 2 2 2 ...

Apr-12 Feb-12 Mar-12 May-12 
81891 103668 118070 100142

第2步:

feb_bill  <- bill_11[which(bill_11$Month == "Feb-12"),]
str(feb_bill)
'data.frame':   103668 obs. of  11 variables:

 $ Month      : Factor w/ 4 levels "Apr-12","Feb-12",..: 2 2 2 2 2 2 2 2 2 2 ...

Apr-12 Feb-12 Mar-12 May-12 
 0 103668      0      0 

我的问题是;我已经删除了因子月份的 3 个级别,**但是新的数据框仍然显示“月份”有 4 个级别。虽然子集操作是正确的,但我有一些疑问。

我最近使用 R,与 SAS 相比。是 R str() 函数的功能还是 .something 错误?谢谢你的帮助。

4

1 回答 1

4

因子水平保持在子集上。要删除它们,请使用droplevels,例如:

feb_bill  <- droplevels(bill_11[which(bill_11$Month == "Feb-12"),])

这将从 data.frame 中的所有因子变量中删除所有未使用的级别。要维护特定变量的水平,请使用except参数。

于 2013-02-20T10:47:10.877 回答