如何使用宏引用数据文件?

How do I reference a data file with a macro?

我有各种 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这样的空格。结果,使用上面的本地定义我得到以下错误:

invalid file specification

这实际上是一个常见的错误,基于对局部宏的误解 在 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