CGSS数据清理:Codebook速成法
对数据使用者来说,了解一个调查数据基本情况的常见途径就是查看该数据的codebook。对数据所有者/提供方来说,制作一份详细的codebook是其数据管理工作中不可或缺的一环。2016年上半年CGSS项目组把CGSS2003年到CGSS2013年期间的8年年度数据合并成一个大数据,根据CGSS数据的特点,为合并数据整理了codebook。CGSS合并数据的codebook包括以下内容:题目、变量名、变量标签、取值、值标签以及变量取值在不同年份中的频数分布。
CGSS合并数据codebook的主体为类别变量在不同年份的频数分布。本文以CGSS20032013两年合并数据中变量a1aa7“第二个家庭成员与被访者之间的关系”为例,为大家介绍两种快速生成频数分布表的方法。该频数分布表的基本结构如下图所示:
图1 变量a1aa7的codebook基本结构
方法一:命令组合codebookout + tabulate
我们在《不知道怎样在Stata里寻求帮助?那就请看这里吧》 (详见CGSS微信公众号: CGSSNSRC)中介绍过,命令codebookout可以把变量取值和值标签直接导到excel表中,导出结果如下图所示:
图2 变量a1aa7的codebookout结果
但我们的codebook中除了取值和值标签外,还需要列出变量取值在每一年中的频数分布,命令codebookout不具备这一功能。此时,还需通过命令tabulate列出变量的频数分布,再与codebookout的结果进行匹配即可,tabulate结果如下图所示:
图3 变量a1aa7的tabulate结果
命令tabulate生成的频数分布表只显示任何一年频数不为0的取值的频数分布,因此还需给两年数据频数都为0的取值加“0”,这样就可以得到变量a1aa7在图1中所示的完整的频数分布表。
方法二:命令fre
命令codebookout和tabulate的组合可以顺利生成codebook,但生成的过程中要进行多步繁琐的匹配和修正。其一,要通过取值将命令tabulate得的频数与命令codebookout导出的结果进行匹配;其二,要单独添加频数为“0”的取值;其三,命令tabulate执行一次只能查看一组变量的频数分布情况,在CGSS20032013数据中,我们需要得到多个变量在不同年份的频数分布状况,因此用命令tabulate查看时需要多次重复执行同一个命令。
鉴于以上情况,我们引入Stata的一个第三方命令fre。命令fre与不同选项的组合,能很好地综合codebookout和tabulate的功能,从而帮我们更快捷地得到一个完整的频数分布表。命令fre语法结构如下:
fre varlist [if] [in] [weight] [, options]
仍然以变量a1aa7“第二个家庭成员与被访者之间的关系”为例,通过命令fre查看其频数分布情况,结果如下图所示:
图4 变量a1aa7在CGSS2003的fre结果
命令fre可以一次查看多个变量的频数分布,但不能交叉查看,因此,查看变量在不同年份的频数分布时需要通过if条件限制。从上图中可以看出,单独用命令fre,可以同时列出取值、值标签和频数分布,但频数分布为“0”的取值依然不能完整列出,此时,只要给命令fre加选项include便可以解决这一问题,如下所示:
图5 变量a1aa7在CGSS2003和CGSS2013的fre结果
然后对其稍作调整便可得到图1所示的频数分布表。
命令fre共有21个选项,要了解其更多功能,抓紧时间help一下吧。