2016-04-25 5 views
0

ich diese Daten Beispiel haben:Fehler mit Fällen (memisc)

W1$age <- c(3,2,4,1,1,3,4,NA,2,NA)

Ich möchte eine Spalte erstellen, in denen:

  • 1 durch 0 ersetzt wird

  • 2,3,4 werden ersetzt durch 1

  • alles e LSE ist NA

Ich habe diesen Code:

library(memisc) 
W1$age2 = cases( 
    "0"= W1$age == 1, 
    "1" = W1$age == 2 | W1$age == 3 | W1$age == 4, 
    "NA" = W1$age != c("0", "1", "2", "3", "4") 
) 

es gibt mir diesen Fehler (ich es googeln, aber ich fand es nicht):

Error in if (any(done == 0) && any(done > 1)) msg("conditions are neither exhaustive nor mutually exclusive") else if (any(done == : 
    missing value where TRUE/FALSE needed 
In addition: Warning message: 
In W1$age != c("0", "1", "2", "3", "4") : 
    longer object length is not a multiple of shorter object length 

Ich hoffe, kann mir helfen, es mit einigen Alternativen zu beheben, vielen Dank!

+0

Der alte Code nicht funktioniert, bekomme ich diesen Fehler 'Fehler if (jeden (done == 0) && jeden (done> 1)) msg ​​("Bedingungen sind weder erschöpfend noch gegenseitig ausschließend") sonst if (any (done ==: fehlender Wert wo TRUE/FALSE gebraucht wurde ' – MSS

Antwort

0

Mit base, könnten Sie tun:

x<- c(3,2,4,1,1,3,4,NA,2,NA) 
x[x==1]<-0 #for x equal 1 convert to 0 
x[(x==2|x==3|x==4)]<-1 #for x equal to 2,3, or 4 convert to 1 
x[(!x %in% c(0:4))]<-NA #if x is not equal to 0 - 4 convert to NA 
+0

Es funktioniert @ User7598! 'W1 $ age [W1 $ age ==" 1 "] <- 0 W1 $ age [(W1 $ age == "2" | W1 $ age == "3" | W1 $ age == "4")] <- 1' Vielen Dank! – MSS

+0

Ja, das wird funktionieren. .. Ich habe die letzte Zeile für den Fall hinzugefügt, dass Sie Werte außerhalb von 0 - 4 in Ihrem Vektor haben.Wenn Sie das nicht tun, dann wird das, was Sie getan haben, funktionieren. – User7598