2016-01-13 113 views
0

我寫了一系列在數據框中創建新列的ifelse語句。例如:R中的ifelse:嵌套替代

rf$rs.X<- ifelse(rf$chl==0 & rf$dm=="y" & rf$gdr=="m" & rf$smk=="n" & rf$age>=70 & rf$sbp>=160, ">=40%", NA) 

當我運行其他ifelse語句,它們將覆蓋前一個,因爲我把它映射到數據幀相同的新列(即我所有的ifelse語句開頭相同的RF $ rs.X )。

我知道,我可以指定一個新的列創建,但我有68個ifelse語句,我不想​​每個新的列:我想要一個新的列。

爲了解決這個問題,我嘗試嵌套所有68個ifelse語句,但它似乎不工作(當我嘗試運行它時,我得到一個藍色加號(+))。在閱讀這裏後,似乎有一個嵌套的限制(N = 50)。

因此,對於一系列ifelse語句,如何將所有輸出獲取到數據框中的同一列,並且ifelse語句覆蓋前一個語句?

謝謝!

+5

查找表是不是很容易 – 2016-01-13 13:15:08

+0

是的,抱歉,這是一個轉位錯誤在實際的代碼中我有'rf $ chl == 0 ' – James

+5

你可以給一個[可重現的例子](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/5963610)? – Jaap

回答

1

我會寫這樣的:

rf$rs.X<- with(rf, ifelse(chl==0 & dm=="y" & gdr=="m" & 
          smk=="n" & age>=70 & sbp>=160, ">=40%", NA) 

那麼下一個(低伴侶的情況下說的,能有rs.X值作爲替代:

rf$rs.X<- with(rf, ifelse(chl==0 & dm=="y" & gdr=="m" & 
          smk=="n" & age>=70 & sbp < 160, "30-39%", rs.X) 

所以這樣的值不會被覆蓋的非排序行