【问题标题】:How can I use a loop to create lag variables?如何使用循环来创建滞后变量?
【发布时间】:2021-09-24 15:30:49
【问题描述】:
* 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)

【问题讨论】:

    标签: loops date stata


    【解决方案1】:

    好消息:您只需要一个循环超过 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 ....:也许您正在使用其他地方的语法或只是在那里猜测。

    【讨论】:

    • 感谢您的提示!这非常简洁。
    猜你喜欢
    • 2014-11-11
    • 2015-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多