2013-02-20 32 views
1

我從R中的數據幀中刪除變量;檢查輸出之後按如下:數據幀中的str()函數

步驟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()函數的功能還是錯誤的? 感謝您的幫助。

回答

3

因子水平保持在子集上。要刪除它們,使用droplevels,如:

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

這將降低您的data.frame所有因子變量所有未使用的水平。要在特定變量上保持等級,請使用except參數。