2017-02-02 2 views
0

Ich brauche eine Funktion in R, die Folgendes tut. Ich habe eine Matrix mit einigen DatenR bekomme jede Spalte mit NA

mydata <- data.frame (matrix(c(1,2,3,NA,2,3,NA,NA,2), 3,3)) 

mydata 
    X1 X2 X3 
1 1 NA NA 
2 2 2 NA 
3 3 3 2 

Nein ich jede Spalte dieser Matrix überprüfen will, ob es eine NA in einer Spalte ist und einen Vektor erstellen, die 0 speichert, wenn es eine NA in einer Spalte oder 1 wenn es keine NA in der Spalte gibt.

Überprüfen Sie Spalte X1: Wenn NA in dieser Spalte ist, schreiben Sie 0 in den Vektor, wenn nicht 1 in den Vektor schreiben. Dann überprüfe die nächste Spalte und so weiter.

Nach Überprüfung mydata sollte der Vektor so aussehen

(1 0 0) 

mit

colnames(mydata)[colSums(is.na(mydata)) > 0] 

ich die Spaltennamen erhalten, die NA haben. Aber wie kann ich diese Funktion verwenden, um den Vektor zu erstellen?

+1

'sapply (mydata, Funktion (x)! Any (is.na (x)))' ' – jogo

+0

ifelse Binär (colSums (is.na (mydata)) == 0, 1, 0) ' – Sotos

+0

Erstaunlich !! Dies ist genau das, was ich brauche – user2348157

Antwort

0

Wir können die logische Vektor von colSums auf dem logischen matrix coerce mit as.integer

as.integer(!colSums(is.na(mydata))) 
#[1] 1 0 0