2016-10-18 3 views
-3

У меня есть фрейм данных 'qlfs', который содержит столбец «qlfs $ TravelMode».Удаление уровня из коэффициента в кадре данных

в $ TravelMode является фактором, содержащий 10 уровней:

levels(qlfs$TravelMode) 
[1] "Non-working adult"     
[2] "Car,van,minibus,works van"   
[3] "Motorbike,moped,scooter"    
[4] "Bicycle"        
[5] "Bus,coach,private bus"    
[6] "Taxi"         
[7] "Railway train"      
[8] "Underground train,light railway,tram" 
[9] "Walk"         
[10] "Other method"      

Набор данных содержит 90k + строки.

Я хотел бы удалить уровень 1 (неработающий взрослый) и любые связанные строки из более широкого блока данных.

Я попытался следующие:

for (i in 1:NROW(qlfs$TravelMode)) { 
    if(qlfs$TravelMode[i]="Non-working adult") { 
     qlfs$TravelMode[i] <- "NA" 
    } 
} 

Где бы потом удалить Nas на более позднем этапе, но это не сработало.

Я также посмотрел на функцию капли(), но не смог заставить это работать.

Может ли кто-нибудь указать, где я ошибаюсь, или предложить лучший способ достичь этого?

+0

Try 'qlfs_clean <- qlfs [! Qlfs $ TravelMode = "Нерабочий для взрослых",]' – zx8754

+1

После того, как вы удалили строки, как @ zx8754 сказал, то droplevels – dww

+0

я попытался как и не мог получить это level to drop – Cobain

ответ

0

Просто удалите строки, которые вы не хотите, а затем заново создайте факторы.

d <- factor(letters[1:20]) 

d <- d[d != 'a'] 
d <- factor(d) 

levels(d) 
+0

Упс, извините! Я попробовал это, а неработающие взрослые остались на уровне – Cobain

+0

. Тогда я думаю, нам нужно будет увидеть воспроизводимый пример. – timcdlucas

+0

Я разработал то, что было в конце, функция factor() не будет работать, поскольку уровень все еще содержит записи. Я сбросил все строки из фреймворка с соответствующим уровнем, а затем, когда записи были равны 0, я запустил factor(), и он опустил уровень. Приветствую вас за помощь – Cobain

Смежные вопросы