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.
- 注:四分位间距:即上四分位数与下四分位数之间的差值,四分位数越大,说明数据离散程度越大*/
复制代码 |