当EVID列等于1时,我试图将CMT值从2更改为1,基本上我想做的就是这样
当NEW $ EVID == 1时 然后 NEW $ CMT == NEW $ CMT-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