Stata 不replace
一个值,正如我所命令的那样。发生了什么事情? 我有这个变量Shutouts
,它是一个浮点变量(%9.0g)。
一个观测值 = 5.08;这是一个错误,它应该是 5。 我输入:replace Shutout= 5 if Shutout==5.08
。 而且,令我惊讶的是,Stata 回应道:
replace Shutouts=5 if Shutouts==5.08
(0 real changes made)
对于具有相同特征的变量,我有一个类似的问题,名称为Save_perc
;一个值是 9.2,但应该是 .92。而且,也是这一次,我收到了Stata的回复:
replace Save_perc=.92 if Save_perc==9.2
(0 real changes made)
为什么是"0 真正的变化"?
这似乎是一个非常平庸的问题,但我已经为此工作了 30 英尺,但我无法真正弄清楚。
它与浮点数如何存储到内存中有关。比较两种不同的数字格式时,不应使用==
,因为某些内部存储近似值可能会使比较失败。
在您的情况下,您应该只使用
Shutouts=5 if Shutouts > 5.07
或
Shutouts=5 if Shutouts == float(5.07)