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',我无法弄明白。
答案 0 :(得分:3)
它与浮点数如何存储到内存有关。在比较两种不同的数字格式时,不应使用==
,因为某些内部存储近似会使比较失败。
在您的情况下,您应该使用
Shutouts=5 if Shutouts > 5.07
或
Shutouts=5 if Shutouts == float(5.07)