如何使用宏引用数据文件?
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
我有各种 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