Stata技术求助:构建生育与就业研究变量遇egen代码异常
Stata代码实现就业相关核心变量构建
以下针对你的需求提供直接可运行的Stata代码,同时说明逻辑和注意事项:
(a) 生成是否曾工作过的虚拟变量
根据数据中现有字段选择对应方式,无需用egen:
* 方式1:基于已有工作经历标识变量(如work_history=1表示有工作经历) gen ever_worked = (work_history == 1) * 方式2:基于工作相关字段的非缺失值(如存在工作收入则视为曾工作过) gen ever_worked = !missing(work_income)
注意:如果数据中没有直接标识字段,可结合过去的就业状态、社保缴费记录等字段灵活调整判断逻辑。
(b) 生成就业、劳动力队伍虚拟变量
* 生成是否就业的虚拟变量(假设emp_status=1代表当前就业) gen employed = (emp_status == 1) * 生成是否处于劳动力队伍的虚拟变量(就业+失业均属于劳动力队伍,假设emp_status=1=就业,2=失业) gen in_labor_force = inlist(emp_status, 1, 2)
注意:若你的就业状态编码不同(比如lfstat字段1=就业、2=失业、3=非劳动力),可调整为gen in_labor_force = (lfstat <= 2)。
(c) 生成当前雇主处工作年限
根据日期字段的存储格式选择对应代码:
* 方式1:基于精确日期(hire_date=入职日期,survey_date=调查日期,均为Stata日期格式) gen tenure = (survey_date - hire_date)/365.25 // 计算为带小数的年份 gen tenure_int = floor(tenure) // 转换为整数年限 * 方式2:仅基于年份(hire_year=入职年份,survey_year=调查年份) gen tenure = survey_year - hire_year
关于你用egen未达预期的说明
egen多用于聚合类操作(如分组统计、生成极值等),而构建这类逻辑判断型虚拟变量、计算时间差,直接用gen配合逻辑运算符、inlist()、missing()等函数更高效准确,这也是你用egen出错的核心原因。
内容的提问来源于stack exchange,提问作者Theziadcharif
相关产品推荐
相关产品推荐

