在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;
由于
答案 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会找到该文件。