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
firm
和 executive
):
gen sticksaround = executive == F.executive
有关详细信息,请参阅 help by
和 help tsset
。
我有以下形式的数据集:
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
firm
和 executive
):
gen sticksaround = executive == F.executive
有关详细信息,请参阅 help by
和 help tsset
。