2017-02-23 160 views
0

在SAS中,有沒有辦法爲所有的libname引用指定一個公共根目錄,或者將顯式文件夾路徑與libname結合起來?如何爲SAS中的所有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

這是一個選項SASINITIALFOLDER,您可以在配置文件中設置默認路徑。不知道這是你需要的,但我會在哪裏開始。 – Reeza

+0

Off topic,但在Stata中,我一直在做'cd C:/ user',然後只是'使用./subfolder1/file.dta'。 – snoram

回答

3

除了指定的默認目錄與SASINITIALFOLDER選項SAS過程中,您還可以使用SAS宏設施,像這樣:

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

您不必使用LIBREF.MEMBER語法創建librefs和參考數據集。您可以使用引用的物理文件名來引用數據集。

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

您甚至可以忽略.sas7bdat,SAS會找到該文件。

+0

這也是一個答案,我在找什麼(我希望我可以標記兩個),謝謝。 – user812783765

相關問題