如何使用循环创建滞后变量?

How can I use a loop to create lag variables?

* Example generated by -dataex-. To install: ssc install dataex
clear
input int(date date2)
18257 16112
18206 16208
17996 16476
18197 17355
18170 17204
end
format %d date
format %d date2

我正在尝试在 Stata 中创建一个生成四个变量的循环(滞后于 0 个月、3 个月、12 个月和 18 个月)。我尝试了这个(如下),但出现错误:语法无效

foreach x inlist (0,3,12,18) & foreach y inlist (0,90,360,540){
    gen var`x' = (date > date2 + `y')
    
}

这是我无需循环即可成功创建这些变量的方法。如果能简化成循环就更好了

gen var0=(date>date2)
gen var3=(date>date2+90)
gen var12=(date>date2+360)
gen var18=(date>date2+540)

好消息:由于 0 3 12 18 和 0 90 360 540 是成对的,因此您只需要一个循环即可实现 4 种可能性。

foreach x in 0 3 12 18 { 
    gen var`x' = date > (date2 + 30 * `x') 
    
}

foreach 需要 inof 跟随宏名称,因此您的代码此时失败。也没有构造 foreach ... & foreach ....:也许您正在使用其他地方的语法或只是在那里猜测。