Stata:如果存在观察则循环

Stata: Loop up if observation exists

我有以下形式的数据集:

vars: 
year, firm, executive

data:
2002, initech, steve
2002, microtech, john
2003, initech, mike
2003, microtech, john

我想添加一个新变量 "sticksaround" 来指示某位高管明年是否仍在其公司任职。对于我的数据,我希望创建的值是:

0
1
0 or missing (both fine)
0 or missing (both fine)

关于我最好如何解决这个问题有什么想法吗?

我正在考虑遍历所有观察结果 -- 但我如何检查下一年是否有同一位高管的条目?

尝试:

bysort firm (year): gen sticksaround = executive == executive[_n+1]

例如:

clear
input  year str15 firm str5 executive
2002 "initech" "steve"
2002 "microtech" "john"
2003 "initech" "mike"
2003 "microtech" "john"
end

bysort firm (year): gen sticksaround = executive == executive[_n+1]

li

或者,如果您需要比较(例如)2002 年和 2003 年,如果缺少 2003 年,则 而不是 2002 年和 2004 年,请使用 tsset 并尝试(请注意,您将需要 encode firmexecutive):

gen sticksaround = executive == F.executive

有关详细信息,请参阅 help byhelp tsset