2014-02-12 65 views
0

我有一個包含連續數值和二進制變量B的變量A.我想創建一個新變量A1,它包含與A相同的值,如果B = 1且缺失值( NA)如果B = 2。 非常感謝!將變量重新編碼爲R中的兩個新變量

+2

請您可以顯示一些例如數據和結果? –

+2

Folks - 讓新用戶對SO(即-1)保持溫柔。即使缺乏先前嘗試的證據,這個問題也很清楚。 –

+0

除了'ifelse',我想你也可以通過'B',即'A [B == 2] < - NA'來索引'A'。 –

回答

3

您可以使用ifelse()爲:

a1 <- ifelse(B == 1, A, NA) 
1

您可以使用ifelse這個:

A = runif(100) 
B = sample(c(0,1), 100, replace = TRUE) 
B1 = ifelse(B == 1, A, NA) 

你甚至可以離開了== 1爲R解釋0FALSE和任何其他數量TRUE

B1 = ifelse(B, A, NA) 

儘管== 1更靈活,並且更清楚發生了什麼。所以我會選擇第一種方法。

1

這裏有一個簡單而有效的方法沒有ifelse

A <- 1:10 
# [1] 1 2 3 4 5 6 7 8 9 10 
B <- rep(1:2, 5) 
# [1] 1 2 1 2 1 2 1 2 1 2 
A1 <- A * NA^(B - 1) 
# [1] 1 NA 3 NA 5 NA 7 NA 9 NA