2010-02-02 5 views
0

À un certain point dans mon script, j'aime voir le numéro missing values dans mon data.frame et les afficher. Dans mon cas, je dois:Afficher une seule ligne pour chaque valeur NA

out <- read.csv(file="...../OUT.csv", na.strings="NULL") 

sum(is.na(out$codeHelper)) 

out[is.na(out$codeHelper),c(1,length(colnames(out)))] 

Il fonctionne parfaitement bien. Cependant, la dernière commande me donne évidemment l'ensemble data.frame où le NA est TRUE, par exemple:

5561     Yemen (PDR) <NA> 
5562     Yemen (PDR) <NA> 
5563     Yemen (PDR) <NA> 
5564     Yemen (PDR) <NA> 
5565     Yemen (PDR) <NA> 
5566     Yemen (PDR) <NA> 
5567     Yemen (PDR) <NA> 
5568     Yemen (PDR) <NA> 
5601 Zaire (Democ Republic Congo) <NA> 
5602 Zaire (Democ Republic Congo) <NA> 
5603 Zaire (Democ Republic Congo) <NA> 
5604 Zaire (Democ Republic Congo) <NA> 
5605 Zaire (Democ Republic Congo) <NA> 

Avec un grand cadre et beaucoup de NAs qui semble assez désordonné. Pour moi, ce qui est important, c'est seulement lorsque l'AN se produit, c'est-à-dire dans quel pays (dans la deuxième colonne) a une valeur manquante dans la troisième colonne. Alors, comment puis-je afficher une seule ligne pour chaque pays?

Il devrait ressembler à ceci:

1     Yemen (PDR) <NA> 
    2 Zaire (Democ Republic Congo) <NA> 
    3       USA <NA> 
    4      W. Samoa <NA> 
+3

Utilisez 'ncol (x)' au lieu de 'length (colnames (x))' – hadley

Répondre

3

unique(c(1,2,3,4,4))

vous donnera

si

unique(out[is.na(out$codeHelper),c(1,length(colnames(out)))])

devrait être ce que vous cherchez?

+0

parfait, je cherchais exactement une telle fonction! Merci! – mropa

Questions connexes