0

我有各种 Stata 数据文件。它们位于不同的文件夹中。我也有一个do使用这些文件的文件,一次一个。

有没有办法使用宏来引用我do文件中的特定数据集?

例如:

local datafile = "C:\filepath\mydata.dta"

这个想法是稍后在代码中使用它,如下所示:

use `datafile', clear

将宏定义为全局变量是可行的。但我不想让它全球化,所以它不会阻止我一次运行两个单独的程序。

全局定义(不带dta扩展名)是:

global datafile = "C:\filepath\mydata"

这用作:

use "$datafile", clear

编辑:

我的文件路径有空格,如C:\A and B report\mydata.dta. 结果,使用上面的本地定义,我得到以下错误:

无效的文件规范

4

1 回答 1

3

这实际上是基于对 Stata 中本地宏如何工作的误解而导致的常见错误。

如果您的本地宏datafile等于"C:\A and B report\mydata.dta",则封闭的双引号是宏定义过程的一部分,并且不存在于存储的宏中。

要看到这个:

local datafile = "C:\A and B report\mydata.dta"

macro list _datafile 
_datafile:      C:\A and B report\mydata.dta

因此,您的use命令应如下所示:

use "`datafile'", clear

请注意,与重要的空格不同,等号 ( =) 实际上是多余的:

local datafile C:\A and B report\mydata.dta

display "`datafile'"
C:\A and B report\mydata.dta
于 2018-12-11T15:17:49.540 回答