如何为SAS中的所有libname引用指定公共根目录?

时间:2017-02-23 05:45:02

标签: sas stata

在SAS中,有没有办法为所有libname引用分配公共根目录,或者将显式文件夹路径与libname结合使用?

在Stata,我会这样做:

global rootfolder "C:/user"
*and then:
use "$rootfolder/subfolder1/file.dta"
use "$rootfolder/subfolder2/file.dta"
use "$rootfolder/subfolder3/file.dta"

因此,我只需要指定一个根文件夹一次,然后动态地明确指定每个子文件夹。

但在SAS中,我必须创建三次libname:

libname subfolder1 "C:/user/subfolder1";
libname subfolder1 "C:/user/subfolder2";
libname subfolder1 "C:/user/subfolder3";
*and then:;
proc contents data=subfolder1.file; run;
proc contents data=subfolder2.file; run;
proc contents data=subfolder3.file; run;

那么有没有办法在Stata做我能做的事,但在SAS?例如:

*the following code does not work, but I want to do something like this:;
libname rootfolder "C:/user";
*and then:;
proc contents data=rootfolder/subfolder1.file; run;
proc contents data=rootfolder/subfolder2.file; run;
proc contents data=rootfolder/subfolder3.file; run;

由于

2 个答案:

答案 0 :(得分:3)

除了使用SASINITIALFOLDER选项指定SAS流程的默认目录外,您还可以使用SAS宏工具,如下所示:

%let rootfolder=C:/user;
libname sub1 "&rootfolder/subfolder1";
libname sub2 "&rootfolder/subfolder2";
libname sub3 "&rootfolder/subfolder3";

答案 1 :(得分:1)

您不必使用LIBREF.MEMBER语法创建libref和参考数据集。您可以使用带引号的物理文件名来引用数据集。

%let rootfolder=C:/user;
data want ;
   set "&rootfolder/subfolder1/file.sas7bdat"
       "&rootfolder/subfolder2/file.sas7bdat"
       "&rootfolder/subfolder3/file.sas7bdat"
   ;
run;

您甚至可以取消.sas7bdat,SAS会找到该文件。