数据帧中的str()函数

时间:2013-02-20 10:26:03

标签: r dataframe sas

我从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错了? 谢谢你的帮助。

1 个答案:

答案 0 :(得分:4)

因子水平仍然存在于子集中。要删除它们,请使用droplevels,例如:

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

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