如何计算董事加入新公司前的过往薪酬均值(Stata实现)
计算董事入职新公司前的过往薪酬均值(Stata实现)
需求说明
- 针对每位董事的每一家任职公司,计算其入职该公司年份之前所有任职经历的薪酬均值,需排除入职当前公司及之后的薪酬数据
- 数据集包含字段:
director_id、firm_id、enter、year、wage
测试数据
clear input enter year wage director_id firm_id 2006 2006 6.4790964 1 1 2006 2010 6.4783854 1 1 2006 2011 6.4067149 1 1 2006 2012 6.3716507 1 1 2006 2013 6.2248578 1 1 2006 2014 6.0631728 1 1 2011 2011 5.0127039 1 2 2011 2012 4.9616795 1 2 2011 2013 4.9483747 1 2 2011 2014 5.2612371 1 2 2012 2012 4.5389338 1 3 2012 2013 4.4322848 1 3 2012 2014 4.3223209 1 3 2013 2013 4.336947 1 4 2013 2014 4.27459 1 4 2015 2015 -.60586482 1 5 2015 2016 .085194588 1 5 end
实现步骤与代码
1. 提取唯一入职年份
针对每位董事的每家公司,生成唯一入职年份字段,避免重复计算:
bysort director_id firm_id: gen enter_unique = enter[1]
2. 计算过往薪酬均值
按董事ID和入职年份排序后,计算当前公司入职年份之前的所有薪酬均值:
sort director_id enter_unique year bysort director_id (enter_unique): gen prior_wage_mean = /// cond(_n == 1, ., mean(wage) if year < enter_unique[_n])
3. 匹配回原始数据集
将计算结果统一匹配到该董事-公司组合的所有记录:
bysort director_id firm_id: replace prior_wage_mean = prior_wage_mean[1]
4. 验证结果(可选)
查看董事ID=1的计算结果,确认逻辑正确性:
list director_id firm_id enter prior_wage_mean if director_id == 1, clean
结果说明
以director_id=1为例:
- 入职第1家公司(2006年)时无过往任职经历,
prior_wage_mean为缺失值 - 入职第2家公司(2011年)时,均值为2006-2010年在第1家公司的薪酬均值
- 后续公司的均值均为入职年份之前所有符合条件的薪酬平均值
内容的提问来源于stack exchange,提问作者user173192
相关产品推荐
相关产品推荐

