2016-06-14 60 views
2

Stata不会为replace创造价值,正如我所指挥的那样。发生什么事? 我有这个变量Shutouts,这是一个浮点变量(%9.0g)。Stata不会取代变量值

一个观察值= 5.08;那是错误的,应该是5. 我输入:replace Shutout= 5 if Shutout==5.08。 而且,令人惊讶的对我来说,塔塔回应:

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

欢迎StackOverflow上。请查看这些关于如何生成[最小,完整和可验证示例]的提示(http://stackoverflow.com/help/mcve)。也许下面的提示[问一个好问题](http://stackoverflow.com/help/how-to-ask)也值得一读。例如,您不在问题中包含错误消息。请这样做。 – lmo

+0

谢谢,我忘记输入一些相关信息。 – Fuca26

回答

3

它与如何将浮点数存储到内存中有关。比较两种不同的数字格式时,不应使用==,因为某些内部存储近似可能会导致比较失败。

在你的情况,你应该只使用

Shutouts=5 if Shutouts > 5.07 

Shutouts=5 if Shutouts == float(5.07) 
+1

太棒了!它非常完美!我认为这是与数据格式有关的一些问题,但我无法指出问题的症结所在。再一次非常感谢你! (抱歉,由于StackExchange平台本章的低分,我还不能投票给你) – Fuca26

+3

这与Stata的格式无关,即显示格式。完全与精确度有关。 '搜索精度'用于文档。 –

+0

嘿尼克是的我的意思是精度 –