最近刚初步处理了一批海关工企数据,鉴于从一个stata小白开始处理,所以这过程真的非常艰辛,要翻书也得到了来自论坛各个吧友们的经验和帮助(尤其感谢一下黄河泉老师)然后现在刚刚有一些小结果,所以想把我处理过程中遇到的一些问题和解决方法以及代码总结分享一下,一方面也是自己做一个思路整理,以后随时可以看,另一方面也是给大家的参考,如果大家有其它经验或者方法也可以在下面补充一下,有不足之处也请大家批评指正。
1.关于stata版本不兼容问题
stata13的文件在stata14中无法使用,因此需要进行转码,代码如下
set max_memory 16g,permanently
unicode encoding set gb18030
unicode retranslate *.dta, invalid(mark)【这里是强制忽略一些无法转码的参数实现转码】
我在处理的时候有一个很重要的参数没有办法转码,一直是火星文,最后没有办法只能用stata13做了,但是这个命令应该可以转大部分的数据,重点是要通过cd命令,查看文件夹位置,然后将要转化的文件放入该文件夹所在位置就可以。
2.处理城市匹配的问题
我国地级市都有自己的代码,我得到的那份海关工企数据在城市的提取上存在问题,因此我需要对所有的数据重新提取地级市数据,对于上百万条数据量来说工作量非常大,下面分享几个思路:
(1)用模糊提取的方法:企业名称中带地址比如无锡XX厂等,这种类型的数据先不看是否为地级市层面,可以用gen var2=substr( var1 ,1,4 )提取,这里汉字是2位一个字,英文是1位一个字符。或者可以用命令egen var2=ends( var1 ),punct("省") trim last,来提取省后面的汉字。模糊提取的短板是提取完以后需要手动进行删选排除和修正,像我使用duplicates 命令以后依然还有2000多条数据需要手动处理,就很麻烦。
(2)通过企业编码前几位来查询。这个方法是在模糊提取排序后发现的,因为根据city排序以后发现相同city的企业他们企业编码前几位是一样,确认以后发现,企业编码前几位代表的是城市代码。(附件里放了一份2015年对应的城市代码)注意,像北京、上海、重庆这三个直辖市的代码是前三位,所以在一次提取以后需要用replace命令提取一下那些没有被放入的部分。用横向合并的merge命令,merge m:m using *dta
(3)还有一种是通过区号和邮编,但是由于数据的完整度没有企业编码高所以我没有使用。
(4)剩下的部分就是对于手动填写那些还没有被匹配的数据了,最后大概手动了100多条,已经比起最开始的工作量来说小了很多。
今天先更到这里吧,剩下的我慢慢更。


雷达卡




京公网安备 11010802022788号







