【发布时间】:2019-08-20 21:54:39
【问题描述】:
当 EVID 列等于 1 时,我试图将 CMT 值从 2 更改为 1,基本上我想要做的就是这样
当 NEW$EVID==1 然后 新$CMT== 新$CMT-1
但它不起作用
【问题讨论】:
-
请附上您的问题的minimal reproducible example
标签: r tidyverse data-manipulation
当 EVID 列等于 1 时,我试图将 CMT 值从 2 更改为 1,基本上我想要做的就是这样
当 NEW$EVID==1 然后 新$CMT== 新$CMT-1
但它不起作用
【问题讨论】:
标签: r tidyverse data-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
【讨论】: