使用while循环生成变量名称的变量

时间:2019-02-26 00:28:38

标签: loops stata

我正在尝试执行以下操作:

local i=2
while `i'<10 {
gen diff0`i' = f1ysveny0`i'-sveny0`i-1'
local i=`i'+1
}

但是,这似乎不起作用:

`i'-1 

为了与while循环类似,我应该如何为句子编码:

gen diff08=f1ysveny08-sveny07
gen diff09=f1ysveny09-sveny08

1 个答案:

答案 0 :(得分:1)

请勿使用$SQLDataset.Tables。使用while代替:

forvalues

您的错误在于认为

forvalues i = 2/9 { 
    generate diff0`i' = f1ysveny0`i' - sveny0`=`i'-1'
}

等效于

`i-1' 

但不是。在您的代码中,Stata只是被视为宏引用`=`i'-1' ,但减号不能成为Stata名称的一部分。当然,整体不是表达式,因为您需要第二种语法:首先,引用本地宏i-1;然后减去1;最后让Stata使用表达式的结果。

您的代码错误本身并不是致命的,因为没有意义的宏引用被评估为空字符串。但是(我猜)您最终没有在数据集中引用变量名,因为在代码中没有提到i

初学者经常发现这更容易:

sveny0