2017-04-08 41 views
0

我正在與Stata合作,並有一個面板數據集,其年數從1990年到2015年不等。瀏覽數據時,年份顯示爲1990年,1991年等。然而,例如,嘗試了一年下降的時候,它只能通過以下方式Stata年顯示不同於存儲格式

drop if year==11 

導致下降到2000年當繪製數據,蜱也顯示爲1,2,3,4 ...,25,26,而不是實際的年份。

我該如何將年份換算回實際值?

+0

注意https://stackoverflow.com/help/mcve提供標準的問題。我的回答需要一些猜測。如果這不是正確的答案,則需要提供更多信息。 –

回答

0

聽起來好像您或其他人讀取的數據爲year作爲字符串變量,然後使用encode來生成數值變量。這是相當錯誤的方法,因爲你已經發現:你想不是想要字符串映射到整數1了。你需要destring這種情況。現在您已完成此操作,您需要decode,然後destring或(如果原始變量仍存在於數據集中)destring

請注意,您應仔細檢查您的數據。爲什麼年份以這種方式進口?當數據來自電子表格並且人們沒有仔細檢查元數據(例如標題信息)時,通常會發生這種情況。

clear 
input str4 original 
"1990" 
"1991" 
"1992" 
end 
encode original, gen(year) 

* solution 1 
decode year, gen(year2) 
destring year2, replace 

* solution 2 (better) 
destring original, replace 

list 

    +-------------------------+ 
    | original year year2 | 
    |-------------------------| 
    1. |  1990 1990 1990 | 
    2. |  1991 1991 1991 | 
    3. |  1992 1992 1992 | 
    +-------------------------+ 

此外,在Stata中,「格式」與存儲的內容無關,而與顯示內容無關。見help format。自然而然,這是計算中的一個超負荷的術語。

+0

數據是從Excel工作表導入的,具有所有「常規」單元格格式,但不確定導入數據的年份爲字符串,元數據中也沒有可用的相關信息。但是,的確,我使用了編碼命令將變量轉換爲數字,但現在已經解決了,感謝Nick的幫助! – Feodo

+0

這並不足以解決'import'發生的問題。你使用'import excel'或'import delimited'或複製和粘貼什麼?你對任何元數據做了什麼,例如列標題?請注意'import excel'的'firstrow'選項。任何方式,現在你知道'encode'是字符串變量與數字內容的字面意思是一個壞主意。 –