2017-04-12 58 views
1

我有一個數據集應該被重新整形爲一個寬的格式。在多個層次上重新整形

數據目前很長,觀察結果爲給定學校中的每個人確定了「面積」。由於數據有兩層,因此傳統整形代碼出現問題:首先應該重新整形,以便每個觀察能夠唯一地識別一個人和一個學校(具有多個區域)。其次,我們最終應該對每個人(包含多個學校和多個區域)進行一次觀察。

下面是數據如何貌似現在一個例子:

* Example generated by -dataex-. To install: ssc install dataex 
clear 
input str4 id str2 school_code str1 area 
"a111" "1x" "a" 
"a111" "1x" "b" 
"a111" "1x" "c" 
"a111" "1y" "a" 
"a111" "1y" "b" 
"a111" "1y" "c" 
"x222" "1z" "d" 
"x222" "1z" "e" 
"x222" "1z" "f" 
"x222" "1k" "g" 
"x222" "1k" "h" 
"x222" "1k" "i" 
end 

這裏是如何,我想數據集試探性的例子是:

* Example generated by -dataex-. To install: ssc install dataex 
clear 
input str4 id str2(school_code_1 school_code_2) str1(school1_area1 school1_area2 school1_area3 school2_area1 school2_area2 school2_area3) 
"a111" "1x" "1y" "a" "b" "c" "a" "b" "c" 
"x222" "1z" "1k" "d" "e" "f" "g" "h" "i" 
end 

回答

0

感謝您使用的數據實例dataex(SSC)。

這是一個標準的reshape一旦你注意到this FAQ中的提示,你可能需要創建一個新的標識符。

clear 
input str4 id str2 school_code str1 area 
"a111" "1x" "a" 
"a111" "1x" "b" 
"a111" "1x" "c" 
"a111" "1y" "a" 
"a111" "1y" "b" 
"a111" "1y" "c" 
"x222" "1z" "d" 
"x222" "1z" "e" 
"x222" "1z" "f" 
"x222" "1k" "g" 
"x222" "1k" "h" 
"x222" "1k" "i" 
end 

sort id, stable 
by id: gen j = _n 
reshape wide school_code area, i(id) j(j) 

list 

它產生你問。所有這一切說,很難想象這種變化的結構會使後來的Stata處理比原始數據結構更容易。另外,不同的新變量按任意變量名稱分組。如果你的學校和地區的順序不同,最後在*1 *2 *3會有所不同。 (至少)文件格式,顯示格式,數據結構和數據(存儲)類型,不管是正確還是錯誤,至於任何特定軟件的正式版本術語而言。在一個Stata環境中,有一個format命令作爲顯示格式的一個主要意義。還有一個正式的文件格式的想法(例如http://www.stata.com/help.cgi?dta)。所以,雖然歧義很少持續很長時間,但我建議在這裏討論數據佈局或結構(儘管後一個術語也是過載的)。