楼主: 698348
3995 0

[数据挖掘理论与案例] CGSS数据清理:巧用重复命令 [推广有奖]

已卖:51份资源

副教授

37%

还不是VIP/贵宾

-

威望
0
论坛币
51 个
通用积分
7.0282
学术水平
67 点
热心指数
82 点
信用等级
30 点
经验
8628 点
帖子
450
精华
1
在线时间
163 小时
注册时间
2017-2-7
最后登录
2025-8-11

楼主
698348 在职认证  发表于 2017-10-14 11:40:16 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

CGSS数据清理:巧用重复命令



数据清洗时常需要反复运行一些命令,这样不仅耗费精力,而且容易出错,那么,如何避免一遍一遍地重复输入这些命令呢?本文以清洗CGSS数据地理信息为例,为大家简单介绍3种编写与运行命令的方法,希望能为大家所用。

CGSS数据关于调查对象的地理信息共有5个变量,他们分别是省/自治区/直辖市、地级市、县/区、乡/镇/街道、村/居委会,对应的变量名和变量标签如下图所示:

QQ截图20171014112733.png

CGSS地理信息仅披露到省一级,对省以下级别则只进行编码,以区分开不同的调查点,未注明具体地点(这么处理的原因请见CGSS官网的相关说明)。下图所示为CGSS2013数据的地理信息:

QQ截图20171014112741.png

由于CGSS数据每年地理信息的编码不统一,对于想依据地理信息做数据合并的用户来说,需求无法得到满足。有鉴于此,目前项目组决定要统一CGSS2010至CGSS2015数据中的地理信息编码,以确保这5年CGSS数据中的每一层级地理信息的每一个编码都对应唯一一个地点。

那么,该如何统一编码呢?

首先,以CGSS2015数据中的地理信息变量为标准,参照国家统计局发布的2015年统计用区划代码和城乡划分代码,整理出一套编码模板。编码模板共分为5个部分,分别针对省/自治区/直辖市、地级市、县/区、乡/镇/街道、村/居委会进行编码,模板命令长达1200多行。下图所示为变量s41省/自治区/直辖市的编码模板命令:

QQ截图20171014112748.png

其次,将编码模板命令分别在CGSS2010至CGSS2015数据中运行匹配,这样,就可以将5年数据的地理信息编码统一起来。接着依据匹配结果不断修正更新编码模板,每更新一次编码模板,就要在5年数据中重新分别运行修改后的模板命令。

如果在do文件中重复编写模板命令,不仅麻烦,而且容易出错。这里为大家简单介绍3种编写与运行模板命令的方法:do文件、在do文件中使用program命令、ado文件。

方法一:do文件

do文件是一个文本文件,它的扩展名为“.do”,运行do文件时,Stata就会逐条运行do文件里的命令。Do的语法结构是:

   do filename [arguments] [,nostop]

我们可以将编码模板命令单独编写在一个do文件中,给该do文件命名为district,如果需要在CGSS2013数据中运行编码模板命令,直接运行do文件即可。如下图所示:

QQ截图20171014112759.png

需要注意的是,district.do文件需要放在当前目录下,否则,需要在文件名前写出完整路径。

方法二:在do文件中使用program命令
还可以把重复命令编写为一个program程序。定义program非常简单,以program filename开始,以end结束。这里把编码模板命令定义为程序district,生成编码模板命令如下图所示:

QQ截图20171014112804.png

但是还需要基于编码模板在5年数据中的运行匹配情况不断修改编码模板,因此,在重新运行district前,需要删除内存中的程序district。删除程序命令如下图所示:

QQ截图20171014112809.png

打开Stata第一次运行程序district时,因尚未定义该程序,Stata无法删除程序district,会弹出错误提示,命令capture可以解决这个问题。通常把命令capture放在其他命令的前面,告诉Stata当运行其他命令时,无论该命令是否起作用,Stata都不报错,并且继续运行后面的命令。命令capture的语法结构为:

   capture [:] command

因此,将编码模板命令修改如下:

QQ截图20171014112816.png

Stata处理program和do文件的方式相同,都是逐条运行其中的命令,但是运行程序的方式不同。运行do文件时需要在命令窗口输入“do filename”,运行program只需输入程序名称即可。运行程序district如下图所示:

QQ截图20171014112823.png

方法三:ado文件
还可以将编码模板命令保存为一个ado文件。ado文件是以do文件形式编写program的扩展,它是自运行文件。保存方式非常简单,在do文件中编辑完模板命令后,在当前目录下,保存时选择扩展名.ado即可。只要在命令窗口直接输入文件名即可运行该文件。不过需要注意的是,ado文件的文件名必须和程序名保持一致。

QQ截图20171014112829.png

以上内容只是我们基于CGSS数据清洗对Stata编写与运行命令方法的简单介绍,如果您想要了解更多内容,那就赶紧去看do、program和adofile的帮助文件吧。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝


已有 1 人评分论坛币 学术水平 热心指数 收起 理由
飞天玄舞6 + 20 + 1 + 1 精彩帖子

总评分: 论坛币 + 20  学术水平 + 1  热心指数 + 1   查看全部评分

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-6 17:53