簡體   English   中英

R中的ifelse:嵌套的替代方法

[英]ifelse in R: alternatives to nesting

我編寫了一系列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語句不會覆蓋前一個呢?

謝謝!

我會這樣寫:

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

然后,下一個(例如,針對低sbp情況,可以使用rs.X值作為替代:

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

這樣,不合格行的值就不會被覆蓋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM