天天看點

《Stata統計分析與應用(第2版)》一2.1 資料的類型、壓縮和轉化

本節書摘來自華章出版社《stata統計分析與應用(第2版)》一書中的第2章,第2.1節,作者 周廣肅,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視

資料是進行實證研究的基礎,也是運用stata進行分析的基石,是以本節主要講解最基本的資料打開、stata中的資料類型,以及資料壓縮與轉化等相關操作内容。

stata一般能夠識别的資料檔案的字尾名為.dta,打開這些資料檔案的指令為use。use指令的基本語句格式如下:

use [varlist] [if] [in] using filename [, clear nolabel]

在這個指令中,use是打開資料的指令語句,varlist代表變量名稱,if是條件語句,in是範圍語句,using filename代表資料檔案路徑。

下面将詳細介紹常用的5種情形,所使用到的資料檔案名稱為usaauto.dta,是根據統計資料得到的美國汽車産業的橫截面資料(1978年)。在本書附帶CD光牒的data檔案夾中可以找到本章的流工作檔案,表2.1顯示了其中部分資料。

《Stata統計分析與應用(第2版)》一2.1 資料的類型、壓縮和轉化
《Stata統計分析與應用(第2版)》一2.1 資料的類型、壓縮和轉化

打開資料檔案中的全部資料

如果想要打開usaauto資料檔案中的全部資料,輸入的标準指令如下:

use "c:datausaauto.dta"

use表示執行打開操作,引号中的c:datausaauto.dta表示資料檔案的路徑。這裡的usaauto.dta檔案放在了c盤data檔案夾下。如果資料檔案位于stata預設的data檔案夾中,則可使用如下簡化指令:

use usaauto

此外還可以使用sysuse指令打開所有本地電腦上的資料檔案,不管其是否在data檔案夾中,而且不需要注明檔案路徑。在這個例子中指令如下:

sysuse usaauto

打開資料檔案以後,會顯示如圖2.1所示的結果,variables視窗将顯示所有的變量名稱及存儲類型等内容。

《Stata統計分析與應用(第2版)》一2.1 資料的類型、壓縮和轉化

打開資料檔案中的部分變量

有時,并不需要将資料檔案中的所有變量全部打開,因為原始資料可能内容豐富,含有很多變量,而研究隻涉及其中的幾個變量。例如隻用到usaauto檔案中的make和price這兩個變量,可使用如下指令:

use make price using "c:datausaauto.dta"

use make price部分表示需要打開make和price兩個變量,using "c:datausaauto.dta" 部分表示打開的資料檔案路徑及名稱。

打開資料檔案中的部分樣本

此外,原始資料檔案的樣本數量有時過于龐大,例如人口普查的資料動辄千百萬,可是一般的研究大部分不需要全部的樣本,隻需要部分樣本即可。例如,隻要打開usaauto檔案中第5~10個樣本的資料,可以使用如下指令:

use "c:datausaauto.dta" in 5/10

in 5/10部分表示選取的樣本序号,即第5~10個樣本。

打開資料檔案中具有某些特征的樣本

還有種情形:原始資料将不同特征的樣本混雜在一起,而在研究中卻要求将不同的樣本分開,例如分别研究男性、女性的情況,城市、農村的經濟問題等。這時需要分别打開不同特征的樣本資料進行分析,如打開usaauto檔案中進口車樣本資料的指令如下:

use "c:datausaauto.dta" if foreign=1

if是條件指令參數,後面緊跟具體的條件,該指令執行的結果就是讓stata僅僅讀入符合條件的樣本資料。在本例中,foreign=1表示是進口車,是以打開的資料就是進口車的資料。

打開網絡資料

在stata官方網站或其他網站上會提供一些示例資料,如果你想使用這些資料而又沒有直接下載下傳到本地電腦上,stata也有專門的指令以供使用。例如nlswork是stata官方網站提供的有關美國年輕女性年齡工資等的資料,若想通過網絡直接打開,可以運作如下指令:

也可以打開由其他網站提供的資料檔案,将路徑修改成所需要的網址和資料名稱即可。

還有一條更為簡便的指令webuse nlswork,但是這個指令隻能擷取stata官方網站的資料。

資料的類型

stata常用的資料類型主要有三類:數值型、字元型和日期型,下面逐一進行介紹。

(1)數值型

數值型變量,主要由數字、正負号、小數點組成的資料,按其精度和存儲大小不同,又可分為5類,具體内容見表2.2。

《Stata統計分析與應用(第2版)》一2.1 資料的類型、壓縮和轉化

其中double是所有變量當中所需存儲空間最大的一個,相應地其精度也最高。當使用者使用的時候,應根據變量的特征來設定變量類型。在stata中預設的數值型變量類型為float型。

(2)字元型

字元型變量,通常用來說明樣本的一些特征資訊,可以由字母、特殊符号和數字組成,但這裡的數字已經退化成一種符号,不再具有數值特征。字元型資料一般會被儲存為str#格式,str後面的數字代表最大字元長度,如str6表示可容納最大長度為6個字元的字元型變量。字元型變量一般用英文狀态下的引号""進行标注,且引号一般不被視為字元型變量的一部分。

(3)日期型

stata軟體中用來表示時間的變量有多種表達方式,例如1987年8月15日,可以寫為19870815,也可以寫為15081987等。在stata中将1960年1月1日看做分界線,為第0天,之前的天數都加上一個負号,例如1959年12月30日為第-2天。

資料的壓縮

如果資料類型的設定不恰當,會帶來一系列的麻煩,若類型設定過小會使得一些資料無法正常輸入,這一類問題較容易發現,反之類型設定過大,則會造成存儲空間的浪費。對于這一問題的避免可使用compress指令對資料進行壓縮。compress指令能在很大程度上減少資料占用的存儲空間,但不會改變資料的内容和精度,進而使用起來較為友善。資料壓縮的指令語句為:

compress [varlist]

其中varlist是将要壓縮的變量名稱,若不指明要壓縮的變量名稱,stata預設将對整個資料檔案進行相應的壓縮。

例如,我們生成一個樣本,變量的名稱為a,數值大小為1,使用stata預設的類型為float。指令如下:

在這組指令中,clear用于清空記憶體;set obs 1是指樣本容量設定為1(set obs是進行樣本容量設定的指令語句);gen a=1表示生成一個變量的名稱為a,它的值為1;describe指令将用來描述變量的基本情況,上述指令執行後将顯示如圖2.2所示的執行結果。

《Stata統計分析與應用(第2版)》一2.1 資料的類型、壓縮和轉化

從上圖中可以看到,這時候a的類型确實為float。為了壓縮變量a所占用的存儲空間,可使用如下指令:

執行結果如圖2.3所示,可以發現這時a的類型已經變成了byte。

《Stata統計分析與應用(第2版)》一2.1 資料的類型、壓縮和轉化

有時候為了處理友善,需要實作不同資料類型的轉化,這樣可以極大地提高運用資料的效率。最常用的轉化指令有兩個:一個是destring——将字元型變量轉化成數值型變量,另一個是tostring——将數值型變量轉化成字元型變量。

将字元型變量轉化成數值型變量

字元型變量之間不能進行數值計算,是以如果對字元型變量進行數值計算,stata則會提醒出現系統錯誤,這時必須将字元型變量轉化成數值型變量。基本指令語句如下:

varlist是進行資料轉化的變量名稱,generate (newvarlist) | replace表示生成新的變量或者替換原來的變量,options是一些可選項,具體内容如表2.3所示。

《Stata統計分析與應用(第2版)》一2.1 資料的類型、壓縮和轉化

例如,打開資料檔案water,使用describe指令可發現所有的資料類型均為字元型,如圖2.4所示。

《Stata統計分析與應用(第2版)》一2.1 資料的類型、壓縮和轉化

如果想要進行計算,必須将所有資料轉化成數值型,具體指令如下:

第一條語句用于打開water資料檔案,第二條語句destring是進行資料轉化的指令語句,year、production、capital、labor是被轉化的變量名稱,replace表示用轉化後的資料替換原有資料。

這個指令執行完之後,再用describe指令進行檢視,可以得到如圖2.5所示的結果,顯示所有的字元型變量已經轉化成數值型變量了。

《Stata統計分析與應用(第2版)》一2.1 資料的類型、壓縮和轉化

如果字元型變量中含有空格(如表2.4所示為date.dta資料檔案中的日期變量),若想轉化成如表2.5所示的格式,則可使用如下指令:

destring date表示對date變量進行轉化,replace表示替換原有資料,ignore("")表示轉化時忽略空格。注意,兩個引号之間必須有一個空格,否則不能正确執行。

《Stata統計分析與應用(第2版)》一2.1 資料的類型、壓縮和轉化

如果字元型變量中包含特殊字元,如貨币機關“$”、“¥”或“%”符号,也不能實作順利轉化。例如在price.dta資料檔案中,price變量中包含美元符号“$”(如表2.6所示),若要實作到表2.7的轉化就屬于這一種情形。

《Stata統計分析與應用(第2版)》一2.1 資料的類型、壓縮和轉化

實作這種轉化,不僅要消去“$”這一符号,還需要生成新的一列,具體指令如下:

其中,destring price表示對變量price進行轉化,gen(price_1)這一部分的含義就是生成一個新的變量用來存儲轉化後的資料,新的變量名稱為price_1,這不同于replace指令直接用新資料替換舊資料,ignore("$")即在轉化過程中忽略特殊符号“$”的影響。

将數值型變量轉化成字元型變量

其實這一部分的轉換是上面内容的一個逆運算,隻是指令語句不同——由destring轉變成了tostring,其他部分基本一緻,語句如下:

例如,将financevalue.dta資料檔案中的資料全部轉化成字元型變量,所使用到的指令語句為:

第一條指令語句用于打開資料檔案,第二條指令語句用于将所有的數值型變量全部轉化成了字元型變量,前後都使用describe指令描述一下,可以看到由圖2.6向圖2.7的轉化。

《Stata統計分析與應用(第2版)》一2.1 資料的類型、壓縮和轉化

繼續閱讀