我编写了一系列在数据框中创建新列的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语句覆盖前一个语句?
谢谢!
答案 0 :(得分:1)
我会这样写的:
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)
这样就不会覆盖不符合条件的行的值。