我正在尝试执行以下操作:
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
答案 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