我想测量自事件发生以来的周期数(这里是年)(这里由指标变量表示pos
),直到给定数量的领先和滞后(这里是三个)。
下面的代码有效,但看起来很老套,就像我错过了一些基本的东西。是否有更强大的解决方案可以利用内置函数或更好的逻辑?我在11.2。谢谢!
version 11.2
clear
* generate annual data
set obs 40
generate country = cond(_n <= 20, "USA", "UK")
bysort country: generate year = 1766 + _n
generate pos = 1 if (year == 1776)
* generate years since event (up to three)
encode country, generate(countryn)
xtset countryn year
generate time_to_pos = 0 if (pos == 1)
forvalues i = 1/3 {
replace time_to_pos = `i' if (l`i'.pos == 1)
replace time_to_pos = -1 * `i' if (f`i'.pos == 1)
}