2017-04-13 52 views
1

我有這樣一個數據幀:合併多個列與條件

Q17a_17 Q17a_18 Q17a_19 Q17a_20 Q17a_21 Q17a_22 Q17a_23 
1 NA  NA  NA  NA  NA  NA  NA 
2 0  0  0  0  0  0  1 
3 0  0  0  0  0  1  1  
4 0  0  0  0  0  0  1 
5 1  0  0  0  1  1  0 
6 0  0  0  0  0  1  1 
7 1  1  0  0  1  0  1 

而且我想用一個新名稱合併Q17a_17,Q17a_19和Q17a_23在新列。應刪除「舊」列Q17a_17,Q17a_19和Q17a_23。 在新列中應該只有一個值符合以下條件:如果之前存在「NA」,則爲「NA」,如果之前存在某個值「1」(如行3或4或7中),則爲「1」;如果之前只有零,則爲「0」。 也許這是很簡單,但我已經奮鬥了幾個小時......

回答

0

我這裏使用的是先計算一個載體,它是NANA值在三列的至少一個出現的辦法,和零除此以外。另外,我們計算一個包含你想要的數值結果的向量。你想要什麼可以通過將三列邏輯「或」來獲得。然後,將這兩個計算向量加在一起產生期望的結果。

na.vector <- df$Q17a_17 * df$Q17a_19 * df$Q17a_23 
na.vector[!is.na(na.vector)] <- 0 
num.vector <- as.numeric(df$Q17a_17 | df$Q17a_19 | df$Q17a_23) 
df$new_column <- na.vector + num.vector 
df <- df[ , -which(names(df) %in% c("Q17a_17", "Q17a_19", "Q17a_23"))]