stata实战班: 基础数据处理 (1)

第一部分:基本的变量清洁与处理

第二步分:命令label define指定哪个标签值与分类数值相对应

##以下命令为stata中代码
clear
set mem 2g 
set more off              //在Stata 15中及以上版本,默认是set more off了

cd "F:\stata兴趣培训班\中国健康与营养调查(China Health and Nutrition Survey)"      //设置默认路径:打开数据前,需要定位数据文件的位置
dir                               //了解当前路径下有哪些文件

**********************************************************
***Read raw CHNS data and transform it to STATA format ***
**********************************************************


use hhinc_10.dta, clear    //或者,use hhinc_10.dta,clear ,因为已经设定了默认路径文件夹
pwd                                               //显示当前路径
mkdir zhouqiang20200926              //在当前路径下创建一个新的文件夹,名字为“zhouqiang”
*或者加上capture
capture mkdir F:\stata兴趣培训班\中国健康与营养调查(China Health and Nutrition Survey)\zhouqiang20200926  //capture告诉stata自动判断是否该文件已经存在,如果存在,则跳过该命令,如果不存在,则执行该命令

**********************************************************
*第一部分:基本的变量清洁与处理
sum hhinc_pc hhinc               //查看该变量
inspect hhinc_pc hhinc            //查看该变量

nmissing hhinc_pc hhinc          //查看缺失值".",一般缺失值将其视为无穷大
ssc install nmissing           //安装“nmissing”命令

*如果没有安装nmissing这个命令的,可以直接
findit nmissing                  //需联网

sort hhinc_pc                    //升序排列,从小到大排序,此时缺失值"."排在最后

gsort -hhinc_pc                 //降序排列,从大到小排序,此时缺失值"."同样排在最后,无穷小

*思考:如何将缺失值替换为“-99999”
mvencode hhinc_pc, mv(-99999)         //将缺失值全部替换为"-99999"
mvdecode hhinc_pc, mv(-99999)          //"-99999"全部替换为缺失值"."

**********************************************************
***加标签:label

save "F:\stata兴趣培训班\中国健康与营养调查(China Health and Nutrition Survey)\zhouqiang20200926\zqhhinc.dta"       //另存为“zqhhinc.dta”数据

*给数据加标签:label data
 
 label data "2020年9月周强创建"     //给整个数据加了标签,在右下角数据特征中的“label”处显示

*给变量加说明:label variable
label var hhinc "家庭总收入"

*给变量加标签
label value urban urban123         //给变量urban加标签为“urban123”,在右下角变量特征中显示
tab urban

*定义变量的值标签
label define urban123 0 "农村" 1 "城市"  //注意,需要先对变量进行label value,然后对"urban123"进行贴标签值
tab urban                             //并没有改变原变量的变量名
list urban in 1/10
/*注意:查看数据集,变量urban中的数值,全部替换为了标签值*/
/*说明:为变量加标签,需要两步完成,第一步是label value,制定标签urban123与哪个变量相联系*/
/*第二步,命令label define指定哪个标签值与分类数值相对应*/

**********************************************************
*单个变量重命名:rename
rename hhbus hhbus2019           //将变量hhbus,重命名为hhbus123

*多个变量重命名:rename
help rename             //查看该命令形式

rename (hhbusimp hhfarm hhfarmimp) (hhbusimp12 hhfarm12 hhfarmimp12)

*有规律的多个变量重命名:renvars
help renvars                //该命令是一个外部命令,如果没有安装,可以在线安装

ssc install renvars      //安装renvars变量

*比如,在所有变量前加入"pr"
renvars, pref(pr100)         //在所有变量前面加上"pr"
renvars, postf(008)         //在所有变量前面加上"008"

*更多用法,详见help renvars

**********************************************************


**********************************************************
****第二部分:数据整理:拆分与连接数据文件的基本操作 *****
**********************************************************

clear
use hhinc_10.dta,clear              //打开hhinc_10.dta数据

**两个常用的命令:drop与keep

**********************************************************
*纵向合并数据集:append
*删除观测值:drop
drop if (wave==1989 | wave==1991)       //删除1989年和1991年数据
drop if (wave<2006)                    //删除2006年以前数据

save "F:\stata兴趣培训班\中国健康与营养调查(China Health and Nutrition Survey)\zhouqiang20200926\zqhhinc89_04.dta", replace

***
*保留观察值:keep
clear
use hhinc_10.dta,clear

keep if (wave>2004)       //保留2004年以后数据

save "F:\stata兴趣培训班\中国健康与营养调查(China Health and Nutrition Survey)\zhouqiang20200926\zqhhinc06_15.dta", replace

*纵向合并数样本为1989-2015年的据集:append

clear
use "F:\stata兴趣培训班\中国健康与营养调查(China Health and Nutrition Survey)\zhouqiang20200926\zqhhinc06_15.dta", clear

append using "F:\stata兴趣培训班\中国健康与营养调查(China Health and Nutrition Survey)\zhouqiang20200926\zqhhinc89_04.dta"      //1989年至2004年数据追加到数据集zqhhinc06_15.dta中
save "F:\stata兴趣培训班\中国健康与营养调查(China Health and Nutrition Survey)\zhouqiang20200926\zqhhinc89_15.dta", replace

/*说明:纵向合并数据是在对应的变量下增加样本观测值,如果主数据或合并数据中有新的变量,那么对应变量下无该变量的数据集的观测值全为缺失值*/
/*append可以看作将两个数据集合合并后,加长了,增加了观测值*/

**命令erase为删除数据文件

clear
cd "F:\stata兴趣培训班\中国健康与营养调查(China Health and Nutrition Survey)\zhouqiang20200926\"       //删除数据前,定义默认路径

erase zqhhinc06_15.dta        //删除数据
erase zqhhinc89_04.dta
erase zqhhinc89_15.dta

**********************************************************
*横向合并数据

clear
cd "F:\stata兴趣培训班\中国健康与营养调查(China Health and Nutrition Survey)"                //重新定义默认路径

use hhinc_10.dta,clear              //打开hhinc_10.dta数据

/*横向合并前,需要对数据进行排序*/
/*我们按照数据的家庭hhid和年度进行排序*/
sort hhid wave   //先按照hhid排序,在同类别下再按照wave分组

*区别一下情况
sort wave hhid    //先按照wave排序,再按照hhid排序

save hhinc_10.dta,replace

*打开另一个需要merge的数据
use subh_12.dta,clear
sort wave hhid    //先按照wave排序,再按照hhid排序

merge 1:1 wave hhid using hhinc_10.dta         //关键变量一对一匹配

tab _merge

/*新生成了一个指示_merge变量,_merge==1表示master数据,_merge==2表示被merge数据,_merge==3为匹配上的数据*/

***
*横向合并:一对多匹配情况

clear
use urban_11.dta,clear
sort wave commid   //对wave commid排序,该数据集为社区层面数据

save urban_11.dta, replace

*打开master

clear
use hhinc_10.dta,clear
sort wave commid       //该数据集是家庭层面数据,存在多对一的匹配

merge m:1 wave commid using urban_11.dta

/*强调:在进行merge前,一定要检查master数据与using数据中的排序后变量是否identify*/
/*如果不identify,则会报错:r(459);*/
/*标红字体:variable wave does not uniquely identify observations in the using data*/

*例如
clear
use hhinc_10.dta,clear
sort wave commid       //该数据集是家庭层面数据,存在多对一的匹配

merge m:1 wave using urban_11.dta    //提示:此处按照wave进行匹配的,但并不identify

clear
use urban_11.dta,clear
bys wave: gen n=_n          //用于生产识别是否identify变量
tab n

***end

*课后练习
***自行练习数据重整命令:reshape;数据加长(堆砌):stack;数据转置:xpose


  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值