2012-04-08 14 views
3

Ich habe einen großen Datenrahmen, der sowohl leere fehlende Werte als auch NAs enthält. Darstellende Zusammenfassung (Faktor (df $ col)) gibt mir so etwas wieErsetzen Sie unerwünschte Werte der Faktorstufe mit NA

A 
123 
B 
50000 

90000 
C 
26000 
NA's 
12476 

(Beachten Sie den Rohling nach 50000.)
und sum(is.na(df$col)) ist 12476, das gleiche wie die Anzahl der NA 's, aber ich d mag es, die Summe der Leerzeichen und der NA s zu sein.
Ich habe versucht, eine Ebene für die Rohlinge zu erstellen, indem
levels(df$col) <- c("A", "B", "Blank", "C")
tat Und dann df$col <- factor(df$col, exclude="Blank") versuchen, und es sagt, dass die NA ‚s erzeugt wurden, aber meine Ausgabe ist das gleiche. Weiß jemand, wie man NAs auf der Grundlage einer Faktorstufe erstellt oder eine bessere Lösung für den Ersatz der fehlenden Werte hat? Ich denke, das Problem könnte sein, dass die Leerzeichen mehr als ein Leerzeichen sind, also wurden sie nicht in NA umgewandelt, aber ich weiß nicht, wie ich das bestätigen soll.

Antwort

2

Versuchen Sie folgendes:

df <- data.frame(a=11:18, col=c("C", "", "A", NA, "A", "", "C", NA)) 
levels(df$col) # "" "A" "C" 
sum(is.na(df$col)) # 2 

df$col <- factor(df$col, levels=LETTERS[1:3]) 
levels(df$col) # "A" "B" "C" 
sum(is.na(df$col)) # 4 

Da die neuen Ebenen beinhalten nicht leer (""), werden alle Rohlinge NA werden wird.

+0

Leider funktioniert das nicht für mich, weil meine Faktorstufen eigentlich nicht A: C heißen. Ich habe versucht, das Äquivalent von Ebenen (df $ col) <- c ("A", "B", "Blank", "C") und df $ col <- Faktor (df $ col, levels = c ("A") , "B", "C")) und das hat nicht funktioniert. Irgendwelche Ideen? –

+0

Ok, ich habe Ebenen (df $ col) <- c (LETTER [1: 2], "Leer", LETTER [3]) und df $ col <- Faktor (df $ col, levels = LETTERS [1: 3 ]) und das hat funktioniert. Vielen Dank für die Hilfe. –

Verwandte Themen