分享一下最近清洗CFPS心得,有错误求指正

目标:得到一个四期面板数据,每期包括家庭库和个人库

以2014年为例,2016、2018、2020省略处理过程

一、提取变量

1.处理个人库

keep fid14 pid provcd14 urban14 cfps2014_age cfps_gender qea0 qp201 cfps2014eduy_im qz207 ku802 

替换缺失值
for var _all: replace X =. if inlist(X, -10, -9, -8, -2, -1)
婚姻状况
codebook qea0
recode qea0 (2 = 1 "已婚")(1 3 4 5 = 0 "未婚"), gen(qea0_1)
drop qea0

2.处理家庭库

keep fresp1pid fid14 provcd14 urban14 finc familysize fwage_1 foperate_1 fproperty_1 ftransfer_1 fu201 fo1
替换缺失值
for var _all: replace X =. if inlist(X, -10, -9, -8, -2, -1)
对收入、人情支出取对数
foreach var of varlist finc fwage_1 foperate_1 fproperty_1 ftransfer_1 fu201 {
gen log`var'=log(`var')
}
drop finc fwage foperate fproperty ftransfer fu201
二、合并个人库和家庭库

use "D:\2014famecon.dta"
rename fresp1pid pid
merge 1:1 fid14 pid using "D:\2014person.dta"
keep if _merge==3
drop _merge
gen year=2014

三、数据核查

egen miss = rowmiss(fo101 familysize logfinc logfwage_1 logfoperate_1 logftransfer_1 logfu201 age age2 gender qp201 eduy_im qu802 qz207 qea0_1)
tab miss
keep if miss == 0

2014、2016、2018、2020都按照以上方法处理保存

四、合并四年

use"D:\2014.dta"
append using "D:2016.dta"
append using "D:\2018.dta"
append using "D:\2020.dta"

五、构建非平衡面板

duplicates tag fid14 year, gen(num)

tab num

keep if num == 0

order fid year

六、到此,整理结束.但清洗结束后,所剩样本量不到2000个,显然清洗过程有问题,还请大家指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值