主要工作是清洗数据和匹配城市行业,以及用类似excel数据透视表的功能加总到城市和行业。
以下是总结,不一定完全合理,也没有完全按照聂辉华老师文章那样处理得很精确,不过也参考了一些比较权威期刊发表的文章,仅供参考。个人水平有限,有问题的话欢迎指正,若有其他解决方案也恳请赐教,共同进步。
一、导入数据到stata
从access格式导入stata,有帖子介绍过具体操作,参考:
https://bbs.pinggu.org/thread-3231726-1-1.html
https://bbs.pinggu.org/forum.php ... =#pid62774762Access
亲测无误
- odbc load, dsn("1999") table("qy99")
二、初步清洗数据
(一)指定目标路径
正式开始前可以先指定目标路径,也就是通过运行程序产生的文件放在哪里以及调用的文件放在哪里,命令如下:
- cd "E:\数据"
(二)打开do文件记录命令
打开do文件记录命令也是一个不错的习惯,do文件写得差不多以后,可以从头再运行一遍,记录下结果,这时候可以用log的命令:
- log using filename,text replace
- log close
(三)筛选数据
下面正式开始筛选数据,相关标准很多,很多文章有介绍,被引最多的是(Brandt,2012;聂辉华,2012)这两篇,我在另一个帖子里有发过论文原文,参考:https://bbs.pinggu.org/thread-7387896-1-1.html
我这里只根据需要进行了几个关键变量的筛选,命令如下:
- keep if 固定资产合计 > 0
- keep if 工业总产值(不变价、新规定)> 0
- keep if 工业总产值(现价、新规定)> 0
- keep if 工业增加值 > 0
- keep if 工业销售产值(现价、新规定)> 0
- keep if 中间投入合计> 0
- keep if 全部职工> =30
- keep if 实收资本 > 0
(四)删除无关变量
因为工企数据库里面的变量特别多,数据量也很多,动辄几十万,所以没用的变量建议删掉,或者直接只保留需要的变量,命令如下:
- keep 省地县码 行业类别 注册类型 全部职工 工业总产值(不变价、新规定) 工业总产值(现价、新规定) 工业销售产值(现价、新规定) 工业增加值 固定资产合计 实收资本 港澳台资本金 外商资本金
记得适时保存数据,但不要时时保存,因为stata不像excel可以随时Ctrl+Z,stata里面错一步就要重新来,所以小心了。
- save "E:\数据\1999【step1】初步清理.dta",replace
(一)重命名加标签
因为工企数据库里变量名称是汉字,在stata里虽然能导入,但是不便于进行后续的运算,所以还是把涉及运算的变量改名字,顺便label标记备注一下,要不改到最后都乱了。这里列几个关键变量,一是便于后续理解,二是给个示范。
- rename 省地县码 xingzhengdaima
- rename 全部职工 congye
- rename 工业总产值(不变价、新规定) zongzhi
- rename 工业增加值 zengjia
- rename 实收资本 shishou
- label variable xingzhengdaima "行政区划代码6位"
用来匹配的变量格式和名称应该是相同的,比如我这里用行政区划匹配城市名称,行政区划的变量在匹配的文件和被匹配的文件里应该有相同的命名,我这里是xzdaima1,也有相同格式,即数字型。
我只用地级市数据,所以只取原来字符串型数据xingzhengdaima 的前四位,新变量命名为xzdaima,又因为在另一个文件里行政代码的变量为数字型, 所以这里将字符串型数据转为数字型,然后命名为xzdaima1,和匹配过来的那个文件里的变量名以及数据类型一致。
- gen xzdaima= substr( xingzhengdaima,1,4)
- /// 行政区划代码为字符串型数据,如果为数字格式先用tostring转为字符串,然后取行政区划代码前四位
- destring xzdaima , generate(xzdaima1)
- ///把行政代码转为数字类型
(三)匹配城市
然后是关键一步,用merge命令合并,这里是m:1,多对一,因为企业很多,但城市就那么几百个。关于匹配就不多说了,网上有很多资源可以学习。
- merge m:1 xzdaima1 using "E:\数据\行政区划代码匹配表.dta"
(四)删除没匹配上的企业
- drop if _merge==1|_merge==2
- drop _merge
四、匹配行业
和匹配城市一样,行业也有很多标准,有几版,所以行业代码也有所不同,需要对应,这个对应也得自己做。步骤和上一步差不多。
(一)重命名
- rename 行业类别 hangyedaima
- destring hangyedaima , generate(daima2002)
- merge m:1 daima2002 using "E:\1998-2002行业代码匹配表.dta"
- drop if _merge==1|_merge==2
- drop _merge
- save "E:\Hurry Up\长三角扩容与产业升级\数据\1999【step2】匹配城市行业.dta",replace