Stata基礎操作:數據管理(二) Stata WorkShop2:Data Management Chang Y. Chung Princeton University |
/*在當前工作路徑下建立dm文件夾并進入*/ |
- cap findfile dm
- if "`r(filename)'" == "" mkdir dm
- cd dm
復制代碼 |
/*下載數據、解壓、進入解壓包*/
- copy "https://codeload.github.com/Chang-Y-Chung/dm/zip/master" "dm-master.zip"
- unzipfile "dm-master.zip", replace
- cd dm-master
復制代碼 /*顯示自帶及部分下載數據集*/ |
/*Some Variables from auto.dta*/
- sysuse auto, clear
- describe make price mpg foreign
復制代碼
/*tabulate(含標簽)*/ |
- sysuse auto, clear
- tabulate foreign
復制代碼
/*tabulate(不含標簽)*/ |
- sysuse auto, clear
- tabulate foreign, nolabel
復制代碼
|
/*summarize*/- sysuse auto, clear
- summarize price mpg
復制代碼
|
/*其它一些有用的命令*/- sysuse auto, clear
- describe make mpg price
- inspect make mpg price
- codebook make mpg price
復制代碼 |
/* 輸出到EXCEL-export excel與import excel 為Stata12新增*/ |
- sysuse auto, clear
- keep make price foreign
- keep in 1/5
- export excel using auto.xls, replace first(var)
- !start auto.xls // windows
- /* !open auto.xls // mac */
復制代碼
|
/*輸入EXCEL文件中的數據*/ |
- import excel using auto.xls, clear firstrow
- describe
復制代碼
菜單操作:File------>Import--------->EXCEL spreadsheet(*.xls,*.xlsx) |
/*常見數據集的處理情形*/ |
|
|
|
/*Append 舉例*/ |
- /*奇數集*/
- use http://www.stata-press.com/data/r13/odd1.dta, clear
- keep in 1/3
- list
- save odd.dta, replace
復制代碼
|
- /*偶數集*/
- clear all
- input number even odd
- 4 10 .
- 5 12 .
- end
- list
- save even.dta, replace
復制代碼
|
- /*將偶數集追加到奇數集中*/
- use odd.dta, clear
- append using even.dta, generate(obsFrom)
- list
復制代碼
|
- /*關于Append追加 */
- 語法: append using filename [, options]
- 將硬盤中的副數據集(即上式using后的數據集)添加到內存中的數據集(主數據集)
- 1.新的主數據集添加更多觀測值
- 2.變量間的匹配的依照變量名(而不是變量序號)
- 3.沒有的變量也會以缺失值代替
復制代碼 |
/*Merge 舉例*/
|
- cd dm-master // 解壓文件夾為dm-master
- use age, clear // 主數據集
- merge 1:1 id using weight, report
- save ageWeight, replace
復制代碼
- input region x
- 1 15
- 2 13
- 3 12
- 4 11
- end
- save z,replace
- clear all
- input id region a
- 1 2 26
- 2 1 29
- 3 2 22
- 4 3 21
- 5 1 24
- 6 5 20
- end
- merge m:1 region using z ,report keepusing(region x)
- sort id,stable
- browse
復制代碼 |
/*關于merge(橫向)*/ |
- 句法:merge 1:1 varlist using "using file name", report或者merge m:1 varlist using "using file name", report
- 依照主/副數據集相同變量加以橫向合并,
- 主數據集中的數據是不可更改,將一同出現在新數據集
- 默認情況下會自動產生一個含以下序號的_merge變量,意義分別為:
- 序號1-指master-代表該值僅存在于主數據集
- 序號2-指using-代表該值僅存在于副數據集
- 序號3-指master-代表該值同時存在于副數據集和主數據集
復制代碼 /*數據輸入*/
infile:- infile str14 country setting effort change using test.raw, clear
- list in 1/3
復制代碼
|
- /*自由文本格式Free-format*/:
- 1.指每個變量的值均以空格/Tab/逗號分開
- 2.如果嵌入空格或逗號,那么字符數據值會加引號
- 3.如果不同觀測值已經以行劃分開,應考慮使用import delimited(自Stata13起取代insheet)
復制代碼 |
- /*固定格式文本數據:Fixed Column Format*/
- //固定格式指每個變量的值均在固定的列,有時需要用字典文件(.dct)加以描述
- //輸入:以test.raw為例
- infile using test.dct, clear
- //查看:
- type test.dct
復制代碼 |
注:固定與自由格式是ASCII格式的兩種分類
|
- *expand:拓展數據,以下述韋恩圖的繪制為例,將整理后的數據集中的每一類觀測值按(freq頻數倍)復制,還原為初始數據集
- //Venn diagram using venndiag 維恩圖
- ssc install venndiag
- clear
- input hayfever eczema freq
- 1 0 31088
- 1 1 9863
- 0 1 43522
- 0 1 9258
- 0 0 35299
- 1 0 11024
- 1 1 6200
- 0 0 345262
- end
- list
- expand freq
- venndiag hayfever eczema
復制代碼
- *collapse——建立包含描述性統計結果的數據集
- sysuse auto
- gen lprice=ln(price)
- collapse(max) max_lprice=lprice max_mpg=mpg ///
- (iqr) iqr_lprice=lprice iqr_mpg=mpg ///
- if !missing(rep78) ,by(rep78)
- sort rep78
- list
- save 1.dta,replace //保存
- /*將lprice 和mpg 的最大值和四分位間距(iqr)提取出,命名為max_lprice/max_mpg/iqr_mpg/iqr_lprice.
- 注:四分位間距:即上四分位數與下四分位數之間的差值,四分位數越大,說明數據離散程度越大*/
復制代碼 |