2016-10-18 6 views
-3

Ich habe einen Datenrahmen 'Qlfs', der eine Spalte 'Qlfs $ TravelMode' enthält.Löschen einer Ebene von einem Faktor innerhalb eines Datenrahmens

Die $ travel ist ein Faktor, der 10 Ebenen:

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"      

Der Datensatz enthält 90k + Zeilen.

Ich möchte Level 1 (nicht arbeitende Erwachsene) und alle zugehörigen Zeilen aus dem breiteren Datenrahmen entfernen.

Ich habe versucht, die folgenden:

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

Wo ich würde dann die nationalen Agenturen zu einem späteren Zeitpunkt entfernen, aber das hat nicht funktioniert.

Ich habe auch auf die Funktion doublevels() geschaut, konnte dies aber nicht zum Laufen bringen.

Kann jemand darauf hinweisen, wo ich falsch liege oder einen besseren Weg vorschlagen, dies zu erreichen?

+0

Try 'qlfs_clean <- qlfs [! Qlfs $ travel = "Nicht-erwerbstätigen Erwachsenen",]' – zx8754

+1

Sobald Sie die Zeilen gelöscht, wie @ zx8754 sagte, dann droplevels – dww

+0

ich beide ausprobiert und konnte das nicht bekommen level to – Cobain

Antwort

0

Entfernen Sie einfach die Zeilen, die Sie nicht möchten, und erstellen Sie die Faktoren neu.

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

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

levels(d) 
+0

Whoops, sorry! Ich habe das versucht und nicht arbeitende Erwachsene war immer noch eine Stufe – Cobain

+0

Dann denke ich, wir müssten ein reproduzierbares Beispiel sehen. – timcdlucas

+0

Ich habe herausgefunden, was es am Ende war, die Funktion factor() würde nicht funktionieren, da die Ebene noch Einträge enthielt. Ich habe alle Zeilen aus dem Datenrahmen mit der entsprechenden Ebene gelöscht und dann, wenn die Einträge gleich 0 waren, habe ich factor() ausgeführt und die Ebene gelöscht. Prost für deine Hilfe – Cobain

Verwandte Themen