2016-07-19 14 views
0

ich in der Logistik einen Vektor mit negativen Werten (-inf,0] und NA-0 und alle positiven Werte (0,inf) auf den gleichen neuen Vektor mit binären Variablen in R für den Einsatz konvertieren möchten Regression.Konvertieren eines Vektors mit numerischen und NA-Werte auf einen Vektor mit binären Werten

Genauer gesagt besteht mein Datensatz med aus einer Matrix mit einem Vektor, der mit med$Amount_total abgerufen werden kann. Dieser Vektor besteht aus Zahlen von -10.000 bis 100.000 sowie NA-Werten. Ich möchte diese in einen Vektor mit 0s anstelle von negativen, 0 und NA Werten umwandeln und alle positiven Werte in 1s umwandeln für die Verwendung in einem glm (logistisches Regressionsmodell), das ich zu den anderen Vektoren in med passen werde .

Beispiel:

input <- c(50,NA,-4,32,0,0,12) 
desired_output <- c(1,0,0,1,0,0,1) 
+1

Wie wäre es 'ifelse (is.na (x) | x <= 0,0,1)' mit 'X' dein Vektor sein. – count

+0

Hallo @Ali, wenn eine der Antworten Ihr Pb löst, könnten Sie auf "Akzeptieren" klicken, damit andere wissen, dass es gelöst wurde. Vielen Dank. – agenis

Antwort

1

Sie mögen dies tun können:

a=c(50,NA,-4,32,0,0,12) 
(a>0 &!is.na(a)) + 0 

a ist Ihr Eingangsvektor, in der Klammer gibt es die Kombination des gewünschten Zustandes. Es erstellt einen logischen Vektor von TRUE/FALSE. Um es in einen booleschen Vektor umzuwandeln, können Sie es mit as.numeric numerisch erzwingen oder Null hinzufügen, was den gleichen Effekt hat.

#### [1] 1 0 0 1 0 0 1 
1

Wir versuchen

as.integer(replace(v1, is.na(v1)|v1 < 0, 0)!=0) 

Oder

as.integer(!(is.na(v1) | v1 <= 0)) 
#[1] 1 0 0 1 0 0 1 
Verwandte Themen