我是一个非常新手的R程序员,我正在尝试将旧的SAS代码转换为R.我需要根据条件替换值,如果条件为假,请不要管它们.我已经搜索了这个并尝试了许多解决方案,但无济于事.我这样做的原因是对事件的第一个实例进行分类(在这种情况下,医生开处方).如果他们写处方的第一个月是去年的5月,他们的开始月份(新编)是5.如果是6月,那么6等我从今年6月开始倒退,我想更新他们的如果找到早期处方,则开始月份(newwriter).如果没有找到早期处方,我想单独留下这个号码.这是我正在使用的代码:
newwriters$newwriter=ifelse(newwriters$MTRx_06_30_2017>0,18,NULL)
newwriters$newwriter=ifelse(newwriters$MTRx_05_31_2017>0,17,NULL)
newwriters$newwriter=ifelse(newwriters$MTRx_04_30_2017>0,16,NULL)
newwriters$newwriter=ifelse(newwriters$MTRx_03_31_2017>0,15,NULL)
newwriters$newwriter=ifelse(newwriters$MTRx_02_28_2017>0,14,NULL)
newwriters$newwriter=ifelse(newwriters$MTRx_01_31_2017>0,13,NULL)
newwriters$newwriter=ifelse(newwriters$MTRx_12_31_2016>0,12,NULL)
newwriters$newwriter=ifelse(newwriters$MTRx_11_30_2016>0,11,NULL)
newwriters$newwriter=ifelse(newwriters$MTRx_10_31_2016>0,10,NULL)
Run Code Online (Sandbox Code Playgroud)
问题是,如果在那个月没有找到处方,它会不断将更高的值更改为0.我希望它只留下价值观.我已经尝试了以下所有内容但没有成功:
newwriters$newwriter=ifelse(newwriters$MTRx_06_30_2017>0,18,newwriters$newwriter)
newwriters$newwriter=ifelse(newwriters$MTRx_06_30_2017>0,18,newwriters[,16])
newwriters$newwriter=ifelse(newwriters$MTRx_06_30_2017>0,18,)
Run Code Online (Sandbox Code Playgroud)
正如我所提到的,我是编写R代码的新手.我确信有更好/更快/更有效的方法,但我不确定还有什么可以尝试.在此先感谢您的帮助!