我正在尝试自动执行一系列顺序命名的文件,以相同的方式处理它们,然后保存它们的过程。
我认为将forvalues
循环与全局宏一起使用将是在Stata中做到这一点的最佳方法。
我的代码如下:
global s=1988
forvalues i=${s}/2018 {
import excel "${s}.xlsx", sheet("Data") firstrow clear
.
.
.
save ${s}, replace
}
但是,这给了我错误:
程序错误:代码与大括号位于同一行
似乎Stata正在读取全局宏的花括号作为循环的开始。我尝试了循环的不同变体来解决此问题,但无济于事。由于我在循环中使用clear
,因此无法使用局部宏,否则它将陷入无限循环。
答案 0 :(得分:1)
我以前遇到过这个问题。由于某种原因,Stata对花括号的数量感到困惑。如果删除它们,则forvalues
循环将按预期工作:
global s = 1988
forvalues i = $s / 2018 {
display `i'
}
1988
1989
1990
1991
.
.
.
2016
2017
2018
您还可以将全局宏s
嵌套在本地宏中:
local s = ${s}
forvalues i = 1 / `s' {
display `i'
}