首页 > 解决方案 > 基于其他列的值的条件更改

问题描述

当EVID列等于1时,我试图将CMT值从2更改为1,基本上我想做的就是这样

当 NEW$EVID==1 然后 NEW$CMT== NEW$CMT-1

但它不工作

标签: rtidyversedata-manipulation

解决方案


你可以使用ifelse

  NEW$CMT <- ifelse( NEW$EVID==1,  NEW$CMT-1, NEW$CMT)

或者你可以使用布尔算术:

  NEW$CMT <-  NEW$CMT -( NEW$EVID==1)*1

您还应该意识到在 R 中“==”运算符不进行赋值。all.equal除非您确定您的值是整数,否则使用它通常更安全。考虑这个结果:

seq(0,1, by=0.1) == (0:10)/10
 [1]  TRUE  TRUE  TRUE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE  TRUE

推荐阅读