如何在Stata中追踪同公司董事会成员变动并创建对应变量
在Stata中创建董事会变动标识变量
要实现同一家公司相邻年份间董事会成员变动的二元标识(变动则为1,无变动则为0),可以通过数据合并+分组汇总的方式完成,以下是针对你的示例数据的完整解决方案:
完整Stata代码
clear input dirid firmid year 1 10 2006 2 10 2006 3 10 2006 1 10 2007 2 10 2007 3 10 2007 1 10 2008 2 10 2008 3 10 2008 4 10 2008 3 10 2009 4 10 2009 end * 1. 排序数据并保存临时文件,用于后续跨年份合并 sort firmid year dirid tempfile board_data save `board_data' * 2. 合并当前年份与上一年的董事数据,匹配同公司同董事的记录 merge m:1 firmid dirid using `board_data', keepusing(year) rename(year last_year) replace last_year = last_year + 1 // 将上一年的年份转换为当前年份的对比基准 * 3. 标记新增/离职董事 gen is_new = (year == last_year) if _merge == 1 // _merge=1:仅当前年有该董事(新增) gen is_left = (year != last_year) if _merge == 2 // _merge=2:仅上一年有该董事(离职) * 4. 按公司-年份汇总,生成变动标识变量 bysort firmid year: gen changes_in_the_board_of_directors = (max(is_new, is_left, 0) == 1) * 5. 清理中间变量,保留每个公司-年份的唯一标识记录 drop _merge last_year is_new is_left bysort firmid year: keep if _n == 1 * 查看最终结果 list firmid year changes_in_the_board_of_directors, clean
代码解释
- 排序与临时文件:先按公司、年份、董事ID排序,确保后续合并和分组的准确性,同时保存原始数据为临时文件用于跨年份匹配。
- 跨年份合并:通过
merge将每个董事的当前年份数据与历史数据匹配,重命名上一年的年份字段,方便对比当前年与上一年的董事存在情况。 - 新增/离职标记:利用
_merge的结果判断董事是新增(仅当前年存在)还是离职(仅上一年存在)。 - 生成变动标识:按公司-年份分组,只要组内存在新增或离职董事,就将目标变量设为1,否则为0。
- 结果整理:清理中间变量后,保留每个公司-年份的唯一记录,方便后续分析使用。
输出结果
运行代码后,将得到如下结果:
firmid year changes_in_the_board_of_directors 1. 10 2006 . 2. 10 2007 0 3. 10 2008 1 4. 10 2009 1
注:2006年没有上一年的对比数据,因此变量值为缺失;其余年份的结果完全符合需求:2007年无变动取0,2008年新增董事取1,2009年董事离职取1。
内容的提问来源于stack exchange,提问作者user173192
相关产品推荐
相关产品推荐

