(一)CSCO 与 ISCO88的转换表打开中国家庭追踪调查的官网,依次点击文档中心 >数据文档>文本编码。下载职业编码下面的三个文件。

https://www.isss.pku.edu.cn/cfps/wdzx/sjwd/1357972.htm第一个文件是一个excel表格,包含了CSCO与ISCO的对应关系。ISCO_CGSS是
CGSS项目组的职业编码转化方案,ISCO88_CFPS是CFPS项目组的转换方案。

CSCO与ISCO转换表
第二个文件包含了CSCO、ISCO88、SIOPS和ISEI的转换表。

CSCO转换为ISCO88、ISEI、SIOPS
根据CFPS项目组提供的转换表,就可以在任意统计软件中编写相应的转换命令。CFPS项目组也编写了iscoocc命令,实现CSCO至ISCO的转换。在项目组提供的编码中,最重要的时iscoocc.ado文件,该文件包含了具体转换的命令。

CFPS2010职业代码code
用记事本打开 iscoocc文件可以发现,该命令实质是依据转换表对不同职业代码值进行替换。需注意的是,iscoocc命令适用于将2009年版国家职业代码(CSCO09)转换为ISCO88。由于现行最新国家职业代码为2015年发布的版本[8],因此使用前需先确认调查数据中采用的国标代码年份。具体可查阅调查项目组的手册,或通过职业编码内容进行核查。GB/T 6565-2015征求意见稿中列出09和15年对照表[9],因此可以参照该表进行转换。正式版本的标准需要购买,只提供pdf文件[10],在转换前可以核查一下是否存在差异。

iscoocc.ado
CFPS提供的iscoocc命令虽然可以实现CSCO和ISCO之间的转换,但是并不能直接用于职业代码转换。因为该命令只适合5位数的CSCO职业代码与ISCO88之间的转换,且部分取值和缺失值定义在不同调查中可能不一致。所以需要对ado文件进行简要修改。
可以借助AI工具完成ado文件改写,然后进行人工核验。提示词可参考(以CGSS2005中的相关变量为例):
修改stata中下列ado文件,生成新变量qb09bisco88,将已有变量qb09b的对应值转化为isco88对应值,其中6 7 8 9 997 999 处理为缺失值,剩下根据列表CSCO和ISCO88_CGSS 对应关系转换。原有ado文件代码:(复制iscoocc.ado内容)。下表中第一列使用的编码为qb09b所用编码,ISCO88_CGSS为转化后变量qb09bisco88的编码:(根据需要复制对应转换表)。

修改后的ado文件
修改好的ado文件保存到"C:\ado\personal"路径。在stata中运行相关文件即可实现职业代码的转换。修改ado文件方法虽然可以实现相关功能,但还是避免不了人工核查和提示词的调试过程。例如,上面修改后的ado文件就把原先iscoocc改成qb09bisco88了。下面介绍第二种方法,借助现有命令和转换表实现职业编码的转化。
(二)crosswalk命令crosswalk命令是瑞士伯尔尼大学社会学教授Ben Jann开发的Stata命令[11](estout输出表格指令也是其开发的[12])。根据help文件,crosswalk可以实现ISCO不同年份编码之间的转换,以及ISCO与ISEI/SIOPS/EGP等社会地位测量之间的变换。同时,crosswalk命令还可以实现自定义转换列表和命令,省去上述修改和调试ado文件的繁琐过程。

ISCO与ISEI/EGP/SIOPS等地位指标的转换

也可以实现ISCO编码之间的转换
首先安装crosswalk命令和moremata包。
//安装crosswalk命令 ssc install crosswalk, replace //安装moremata(运行crosswalk需要moremata包) ssc install moremata, replace
导入数据,查看职业变量的取值和缺失值。复制csco和isco对应的列表(这里空间有限,仅复制部分表格)。复制之后需要根据数据中的缺失值定义进行简单修改。这里将新定义的转换命令命名为cscoisco08(名字可以自定义)。
use "D:\CGSS\2005\cgss2005_14.dta",clear // 导入数据countcodebook qb09a,t(999)//定义转换表,生成cscoisco08转换指令,即将CSCO转换为ISCO88//添加{},折叠代码{crosswalk define cscoisco08()00 110010 110020 110021 110022 114023 110024 110025 120029 120030 114031 114132 114233 11437 .8 .9 .997 .999 .end }//添加duplicates(first)选项,如果原值(转换表中第一列)重复,使用第一个出现的转换值crosswalk qb09aisco08 = cscoisco08(qb09a),duplicates(first)//将中层干部、中层领导、生产队长等编为生产经营方面的部门经理或主管(isco88代码1220)replace qb09aisco08 = 1220 if inlist(qb09a,301,302,401,518,601,602,603)//将isco88转换为iseicrosswalk isei = isco88_to_isei(qb09aisco08)//查看iseitab isei
由于CFPS提供的转换表为多对一映射,在使用命令时,需要在最后加上duplicates(first),代表使用第一个出现的对应值。