基于其他列的值的条件更改

时间:2019-03-29 22:26:49

标签: r tidyverse data-manipulation

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

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

但不起作用

1 个答案:

答案 0 :(得分:0)

您可以使用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