我想在变量索引中使用循环标量。样例代码:
forvalues j = 1(1)9 {
gen cname_year`j' = CNAME if acyear == `j'
if `j' > 1 {
scalar endv = `j' - 1
forvalues k = 1(1)`endv' {
replace cname_year`j' = cname_year`j'[_n+`k'] if acyear[_n+`k'] == `j' & ID[_n] == ID[_n+`k']
}
}
}
下面的行给我一个“语法错误”:
replace cname_year`j' = cname_year`j'[_n+`k'] if acyear[_n+`k'] == `j' & ID[_n] == ID[_n+`k']
不确定如何解决此问题。任何帮助,不胜感激!
最佳答案
此处无需使用scalar
,但如果您这样做,则肯定需要其他语法。试试吧
local endv = `j' - 1
较大的代码示例似乎在以某种尴尬的方式处理面板数据。如果您对此遇到进一步的问题,则可能需要返回论坛,但是我们需要更多的上下文来明确尝试的内容。
如果要使用标量,则语法为
forvalues k = 1(1)`= endv'
或(可以说是更明确的样式),因为
endv
可以是变量名forvalues k = 1(1)`= scalar(endv)'
您使用的语法是为本地宏设计的,因此需要定义一种。
关于loops - Stata : How to use scalars in variable indexes,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24015632/