Wie Teilmenge von Daten in R ohne NA-Zeilen?
Habe ich einige Daten, die ich auf der Suche bin in der R. Eine bestimmte Spalte mit der überschrift "Höhe", enthält ein paar Zeilen von NA.
Ich bin auf der Suche auf Teilmenge meine Daten-Rahmen, so dass Sie alle Höhen über einem bestimmten Wert, sind ausgeschlossen, aus meiner Analyse.
df2 <- subset ( df1 , Height < 40 )
Jedoch immer wenn ich dies tun, wird R automatisch entfernt alle Zeilen, die enthalten NA Werte für die Höhe. Ich will das nicht. Ich habe versucht, einschließlich der Argumente, die für na.rm
f1 <- function ( x , na.rm = FALSE ) {
df2 <- subset ( x , Height < 40 )
}
f1 ( df1 , na.rm = FALSE )
aber dieses scheint nicht, etwas zu tun; die Zeilen mit NA noch bis Ende verschwindet aus meinen Daten-frame. Gibt es eine Möglichkeit von Untergruppen meine Daten als solche, ohne dass die NA-Zeilen?
- Alternativ können wir
subset (df1 , Height < 40 | is.na(Height))
- Der Vollständigkeits halber, ähnlich wie option aus
dplyr
Paket istfilter(df1, Height < 40 | is.na(Height))
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn wir uns entscheiden, die
subset
Funktion, dann müssen wir aufpassen:Also nur nicht-NA-Werte beibehalten werden.
Wenn Sie möchten, um
NA
Fällen, verwenden Sie logische oder-Bedingung zu sagen, R Sie es nicht fallenNA
Fällen:Nicht direkt verwenden (werden bald erklärt):
Beispiel
Dem Grund, dass dieser ausfällt, ist, dass die Indizierung von
NA
gibtNA
. Betrachten Sie dieses einfache Beispiel mit einem Vektor:Müssen wir irgendwie ersetzen diejenigen
NA
mitTRUE
. Die einfachste Möglichkeit ist das hinzufügen von weiteren "oder" - Bedingungis.na(ind)
:Dies ist genau das, was passieren wird in Ihrer situation. Wenn Ihr
Height
enthältNA
, dann logische operationHeight < 40
landet eine Mischung ausTRUE
/FALSE
/NA
, so müssen wir ersetzenNA
durchTRUE
wie oben.Könnten Sie auch tun: