2013-03-28 596 views
0
input a 
88888888 
99999999 
end 
export excel a.xlsx, replace 

然後,如果我打開excel文件,數字顯示爲8.89e + 07和1.00e + 08。我如何將這些恢復到原始數字。我必須在Excel中執行此操作嗎?有什麼方法可以防止Stata將這些數字轉換爲「科學」格式?Stata:變量類型(8位數字)

+2

只是問明顯,但你確定它不只是一個數字在Excel中的格式更改? – 2013-03-28 01:48:34

+0

我認爲這是Stata的問題。 Stata中的99999999在Excel中導出爲1.00E + 08。 – 2013-03-28 03:48:29

回答

2

input命令的影響是將這些數字讀入float類型的變量中。但是float中沒有足夠的位準確地保存99999999。這是有據可查的。

參見例如的幫助data types

float■找約7位數字的準確性;該數的大小沒有關係。因此,1234567可以完美地存儲爲float,如可以1234567e + 20的數量123456789,然而。 ,將被四捨五入到123456792.一般情況下,該舍入無所謂。

如果要存儲的識別號碼,舍入可能無所謂。如果 標識號是整數,並採取9位數字或更少,並將其作爲long s; 否則,將它們存儲爲double s。double s具有16位精度。「

因此,您使用不適當的數據類型降級了您的數據。這是問題,而不是export excel

+0

謝謝你,尼克。我解決了這個問題,如下所示:.recast double a .format%11.0g a .recode a(100000000 = 99999999) – 2013-03-28 22:20:14

+0

很高興您解決了您的問題,但對於未來,請注意'重鑄double'將永遠不會恢復丟失的位。您需要從一開始就使用適當的數據類型。 – 2013-03-28 22:53:55