2016-07-19 52 views
0

我想一個向量轉換負值(-inf,0]NA0和所有正值(0,inf)與R中的二元變量相同的新載體用於物流的載體中迴歸。轉換與數字和NA值的向量與二進制值

更具體地說,我的數據集med由帶有矢量的矩陣組成,該矢量可以用med$Amount_total檢索。這個向量由範圍從-10,000到100,000的數字以及NA值組成。我想將它們轉換爲0代替負值,0和NA值的矢量,並將所有正值轉換爲1,以用於glm(邏輯迴歸模型),我將適用於med中的其他矢量。

例如:

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

怎麼樣'ifelse(is.na(X)| X <= 0,0,1)'和'x'作爲你的載體。 – count

+0

嗨@Ali如果任何答案解決了你的問題,你可以點擊「接受它」,讓其他人知道它已經解決了。謝謝。 – agenis

回答

1

你可以這樣做:

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

a是你的輸入向量,括號裏面有您需要的條件組合。它創建了TRUE/FALSE的邏輯向量。要將其轉換爲布爾向量,可以使用as.numeric將其強制爲數字,或者添加零,具有相同的效果。

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

我們可以嘗試

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

或者

as.integer(!(is.na(v1) | v1 <= 0)) 
#[1] 1 0 0 1 0 0 1 
相關問題