2017-08-05 1 views

Répondre

0

Vous pouvez tout simplement sous-ensemble de la trame de données en utilisant is.na():

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

Demo ici:

Rextester

1

Salut essayer

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

ou si vous voulez vérifier une colonne particulière, vous pouvez également utiliser

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

Si vous avez le caractère NA valeurs, première exécution

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

pour les remplacer par des valeurs manquantes.

0

split la fonction vient facilement dans ce cas.

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

Une approche alternative et plus générale utilise la commande complete.cases. La commande repère les lignes qui n'ont pas de valeurs manquantes (pas de NA) et renvoie les valeurs TRUE/FALSE.

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

Voir plus de détails:

La plupart des fonctions statistiques (par exemple, lm()) ont quelque chose comme na.action qui applique au modèle, et non pas à des variables individuelles. na.fail() renvoie l'objet (l'ensemble de données) s'il n'y a pas de valeurs NA, sinon il renvoie NA (arrêt de l'analyse). na.pass() renvoie l'objet de données qu'il possède ou non des valeurs NA, ce qui est utile si la fonction traite les valeurs NA en interne. na.omit() renvoie l'objet avec des observations entières (lignes) omises si l'une des variables utilisées dans le modèle est NA pour cette observation. na.exclude() est identique à na.omit(), sauf qu'il autorise les fonctions utilisant naresid ou napredict. Vous pouvez considérer na.action comme une fonction sur votre objet de données, le résultat étant l'objet de données dans la fonction lm(). La syntaxe de la fonction lm() permet de spécifier le na.action comme paramètre:

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

Vous pouvez configurer votre traitement par défaut des valeurs manquantes avec

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