Wie kann ich bei einem Datenrahmen alle bestimmten Werte entlang aller Zeilen und Spalten ersetzen? Angenommen, ich möchte alle leeren Datensätze durch NA
's ersetzen (ohne die Positionen einzugeben):
df <- data.frame(list(A=c("", "xyz", "jkl"), B=c(12, "", 100)))
A B
1 12
2 xyz
3 jkl 100
Erwartetes Ergebnis:
A B
1 NA 12
2 xyz NA
3 jkl 100
df[df=="xyz"]<-"abc"
führt zu einem Fehler mit "ungültiger Faktorstufe". Gibt es eine allgemeinere Lösung?Da PikkuKatja und glallen nach einer allgemeineren Lösung fragten und ich noch keinen Kommentar abgeben kann, schreibe ich eine Antwort. Sie können Anweisungen wie folgt kombinieren:
Für Faktoren liefert der Code von zxzak bereits Faktoren:
Wenn Sie in Schwierigkeiten sind, würde ich vorschlagen, die Faktoren vorübergehend fallen zu lassen.
quelle
Hier sind einige
dplyr
Optionen:quelle
Wir können data.table verwenden, um es schnell zu bekommen. Erstellen Sie zuerst df ohne Faktoren,
Jetzt können Sie verwenden
und Sie können es wieder in einen data.frame konvertieren
Wenn Sie nur data.frame verwenden und Faktoren beibehalten möchten, ist es schwieriger, mit ihnen zu arbeiten
Dabei ist value der Name jeder Spalte. Sie müssen es in eine Schleife einfügen.
quelle
Wenn Sie mehrere Werte in einem Datenrahmen ersetzen möchten, kann das Durchlaufen aller Spalten hilfreich sein.
Angenommen, Sie möchten ersetzen
""
und100
:quelle