我从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个等级。虽然子集操作是正确的,但我有一些疑问。
与SAS相比,我最近与R合作。 它是R str()函数的功能还是.something错了? 谢谢你的帮助。
答案 0 :(得分:4)
因子水平仍然存在于子集中。要删除它们,请使用droplevels
,例如:
feb_bill <- droplevels(bill_11[which(bill_11$Month == "Feb-12"),])
这将从data.frame中的所有因子变量中删除所有未使用的级别。要使用特定变量的主要级别,请使用except
参数。