Wir haben einen Datenrahmen aus einer CSV-Datei. Der Datenrahmen DF
enthält Spalten, die beobachtete Werte enthalten, und eine Spalte ( VaR2
), die das Datum enthält, an dem eine Messung durchgeführt wurde. Wenn das Datum nicht aufgezeichnet wurde, enthält die CSV-Datei den Wert NA
für fehlende Daten.
Var1 Var2
10 2010/01/01
20 NA
30 2010/03/01
Wir möchten den Befehl subset verwenden, um einen neuen Datenrahmen new_DF
so zu definieren, dass er nur Zeilen enthält, die einen NA'
Wert aus der Spalte ( VaR2
) haben. In dem angegebenen Beispiel wird nur Zeile 2 in der neuen enthalten sein DF
.
Der Befehl
new_DF<-subset(DF,DF$Var2=="NA")
funktioniert nicht, der resultierende Datenrahmen hat keine Zeileneinträge.
Wenn in der ursprünglichen CSV-Datei der Wert NA
ausgetauscht wird NULL
, führt derselbe Befehl zum gewünschten Ergebnis : new_DF<-subset(DF,DF$Var2=="NULL")
.
Wie kann ich diese Methode zum Laufen bringen, wenn für die Zeichenfolge der Wert NA
in der ursprünglichen CSV-Datei angegeben ist?
new_DF <- DF[is.na(DF$Var),]
, dh es scheint eine zusätzliche(
Klammer danach zu gebenDF[
?NA ist ein spezieller Wert in R, verwechseln Sie den NA-Wert nicht mit der Zeichenfolge "NA". Abhängig von der Art und Weise, wie die Daten importiert wurden, können Ihre "NA" - und "NULL" -Zellen unterschiedlichen Typs sein (das Standardverhalten besteht darin, "NA" -Strings in NA-Werte zu konvertieren und "NULL" -Strings unverändert zu lassen).
Wenn Sie read.table () oder read.csv () verwenden, sollten Sie das Argument "na.strings" berücksichtigen, um einen sauberen Datenimport durchzuführen, und immer mit echten R NA-Werten arbeiten.
Ein Beispiel für die Arbeit in beiden Fällen "NULL" - und "NA" -Zellen:
quelle
complete.cases
gibt an,TRUE
wenn nicht alle Werte in einer Zeile sindNA
quelle
Dadurch sollte ein neuer Datenrahmen (
new_data
) erstellt werden, in dem nur die fehlenden Werte enthalten sind.Funktioniert am besten, um die Werte zu verfolgen, die Sie später möglicherweise löschen, da sie einige Spalten mit fehlenden Beobachtungen (NA) enthielten.
quelle
Versuchen Sie dies zu ändern:
quelle
DF %>% filter(is.na(Var2))
danachlibrary(dplyr)
.Druckt alle Zeilen mit NA-Daten:
quelle