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


* 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)

好消息:你只需要对4种可能性进行一次循环,因为0 3 12 18和0 90 360 540是成对的。

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

}

foreach需要在宏名后面加上inof,因此您的代码在这一点上失败。也没有构式foreach& foreach ....:也许你使用了其他地方的语法,或者只是猜测。

相关内容

  • 没有找到相关文章

最新更新