2017-08-05 8 views

Antwort

0

Sie könnten nur den Datenrahmen Teilmenge mit is.na():

df1 <- df[!is.na(df$var2), ] 
df2 <- df[is.na(df$var2), ] 

Demo hier:

Rextester

1

Hallo versuchen, diese

new_DF <- DF[rowSums(is.na(DF)) > 0,] 

oder falls Sie eine bestimmte Spalte zu überprüfen, können Sie auch

new_DF <- DF[is.na(DF$Var),] 

Falls Sie haben Charakter NA verwenden können Werte, erster Lauf

Df[Df=='NA'] <- NA 

, um sie durch fehlende Werte zu ersetzen.

0

split Funktion kommt in diesem Fall praktisch.

data <- read.table(text="var1 var2 
    1 21 
    2 NA 
    3 NA 
    4 10", header=TRUE) 

split(data, is.na(data$var2)) 
# 
# $`FALSE` 
# var1 var2 
# 1 1 21 
# 4 4 10 
# 
# $`TRUE` 
# var1 var2 
# 2 2 NA 
# 3 3 NA 
0

Ein alternativer und allgemeinerer Ansatz ist die Verwendung des Befehls complete.cases. Der Befehl erkennt Zeilen, die keine fehlenden Werte enthalten (keine NAs) und gibt TRUE/FALSE-Werte zurück.

dt = data.frame(var1 = c(1,2,3,4), 
       var2 = c(21,NA,NA,10)) 

dt1 = dt[complete.cases(dt),] 
dt2 = dt[!complete.cases(dt),] 

dt1 

# var1 var2 
# 1 1 21 
# 4 4 10 

dt2 

# var1 var2 
# 2 2 NA 
# 3 3 NA 
2

Weitere Details:

Die meisten statistischen Funktionen (zum Beispiel lm()) haben so etwas wie na.action, die zum Modell gilt, nicht auf einzelne Variablen. na.fail() gibt das Objekt (das Dataset) zurück, wenn keine NA-Werte vorhanden sind, andernfalls gibt es NA zurück (die Analyse wird gestoppt). na.pass() gibt das Datenobjekt zurück, ob es NA-Werte hat oder nicht, was nützlich ist, wenn die Funktion intern mit NA-Werten arbeitet. na.omit() gibt das Objekt mit ganzen Beobachtungen (Zeilen) zurück, wenn eine der im Modell verwendeten Variablen NA für diese Beobachtung ist. na.exclude() ist das gleiche wie na.omit(), außer dass es Funktionen erlaubt, die naresid oder napredict verwenden. Sie können sich na.action als Funktion für Ihr Datenobjekt vorstellen, das Ergebnis ist das Datenobjekt in der Funktion lm(). Die Syntax der lm() Funktion ermöglicht die Angabe des na.action als Parameter:

lm(na.omit(dataset),y~a+b+c) 
lm(dataset,y~a+b+c,na.omit) # same as above, and the more common usage 

Sie Ihre Standard-Behandlung von fehlenden Werten mit

options("na.actions"=na.omit) 
Verwandte Themen