2013-02-20 2 views
1

Я бросаю переменные из кадра данных в R; проверки вывода затем в соответствии с ниже:Функция str() в dataframe

Шаг 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. Для уровней maintian для определенных переменных используйте параметр except.