2017-03-17 46 views
0

我是一個新的SAS用戶,我有一個關於將excel文件導入SAS的問題。如何在SAS中動態導入excel文件?

我在我的共享驅動器中有一個excel文件,它在我的電腦上有不同的映射。 (該路徑在一臺PC上標記爲S驅動器,並且在另一臺PC上標記爲Y驅動器的路徑相同)。每當我更換我的電腦並運行我的SAS程序時,通常無法導入它,因爲我沒有重新映射excel文件。

有沒有辦法從這個文件夾中導入一個excel文件,而不必在每次移動PC時重新映射到excel文件的路徑?感謝您的幫助。

+1

我對SAS一無所知,但對於路徑而言,您應該使用UNC。 https://www.lifewire.com/unc-universal-naming-convention-818230 –

+0

同意。在'cmd.exe'中輸入'C:> net use'來查看網絡驅動器字母映射到的服務器地址。 – Hugs

回答

1

當然,一種選擇是使用UNC,如註釋中所述。 UNC是一條類似於//share/folder/otherfolder/file.xlsx的路徑,並且不依賴於驅動器映射。

但是,如果由於某種原因不可行,您肯定可以解決這個問題。你如何這樣做首先取決於你如何運行SAS。

如果您使用Enterprise Guide進行連接,例如,prompt可能是您最好的選擇。提示定義宏變量,宏變量可用於文件名(或驅動器號)。

如果您使用其他方法,各種形式的提示仍然可用,但是您可能會發現創建定義文件名(或libname)的本地文件更容易,甚至可以將驅動器盤符存儲在宏中變量。

如果您完全控制SAS,並且這通常是有用的(不僅適用於這一個程序),您可以在autoexec.sas中加入一些東西。如果您沒有這種控制級別,或者只希望針對此程序特定這一級別,則可以在兩臺PC上以及每臺PC上創建一個位於相同位置(例如,c:\ SASFiles)的文件有不同的文件名/ libname /宏變量(適用於該PC的文件)。然後你在程序的開始部分輸入%include這個文件。

最後,您可能能夠使用PC名稱或其他環境變量來確定您正在使用哪臺機器,然後可以使用它來驅動邏輯。例如:

%macro define_path; 
    %global path_letter; 
    %if &syshostname = 55PC1010G %then %do; 
    %let path_letter=P; 
    %end; 
    %else %let path_letter=Y; 
%mend define_path; 
%define_path; 
%put &=path_letter; 

你要%put &=syshostname在每臺計算機上看到的值,但它應該是很容易弄清楚。如果&syshostname由於某種原因沒有定義,%put _automatic_會告訴你什麼是,並且其中的一個變量應該足夠有用。