标题可能会产生误导。
我有一个纵向数据集,其中包含一个虚拟(dummy1
)变量,指示某个年份是否满足条件,对于给定的category
。我希望在接下来的二十年里考虑这个事件。因此,我想创建一个新的虚拟对象(dummy2
),它在dummy1
为1的观察之后的19个观察值中取值1,以及相同的观察值(下面的示例)。 / p>
我试图创建一个带滞后运算符的循环,但到目前为止还没能让它工作。
答案 0 :(得分:2)
即使失败的代码也可能接近一个好的解决方案。不提供失败的代码意味着我们无法解释您的错误。此外,关注如何使用软件做某事的问题在SO上被广泛认为是边缘的或偏离主题的。
一种方法是
bysort category (year) : gen previous = year if dummy1
by category : replace previous = previous[_n-1] if missing(previous)
gen byte dummy2 = (year - previous) < 20
这里的技巧是创建一个变量,保持虚拟(指标)为1的最后year
,其中的技巧在How can I replace missing values with previous or following nonmissing values or within sequences?
请注意,这与
无关面板标识符是否为数字(在提供的证据上可以是字符串)
您是否有tsset
或xtset
数据
第一次活动前会发生什么;这些年来,previous
缺生并且仍然缺失(但是,通常,在时间序列的末尾注意代码问题)。