0

我正在尝试自动化运行一堆按顺序命名的文件的过程,以相同的方式操作它们,然后保存它们。

我认为使用forvalues带有全局宏的循环将是在 Stata 中执行此操作的最佳方法。

我的代码是这样的:

global s=1988
forvalues i=${s}/2018 {
import excel "${s}.xlsx", sheet("Data") firstrow clear 
.
.
.
save ${s}, replace
}

但是,这给了我错误:

程序错误:代码跟在大括号的同一行

似乎 Stata 正在读取全局宏的大括号作为循环的开始。我尝试了不同的循环变体来解决这个问题,但无济于事。由于我clear在循环中使用,我不能使用本地宏,否则它会进入无限循环。

4

1 回答 1

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'
}
于 2018-09-08T07:02:12.020 回答