2014-02-24 198 views
1

我是SAS新手,我試圖解碼SAS代碼。在腳本開頭的代碼中有一行說 -SAS中的Libref函數

%let sales=sale_q; 
%if (%sysfunc(libref(sales))) %then %do; 
    libname sales "/data/raw/sales/sales_a"; 

我有三個數據文件 - sales_q的季度銷售額,sales_a年銷售額和sales_m每月銷售額。

我的代碼將庫銷售使用的季度銷售數據。 %if語句的作用是什麼? 我搜索了libref函數,發現它只是驗證庫路徑名的存在。但我不明白需要使用IF語句。

感謝您的幫助!

+1

-1:這是一個RTFM問題。 – 2014-02-24 09:24:14

回答

2

SAS文檔是你的朋友。

一個簡單google search使我LIBREF Function page of the SAS documentation

它描述LIBREF功能:

指定要驗證的邏輯庫引用名。在DATA步驟中,libref可以是 字符表達式,用引號括起來的字符串或其值包含libref的DATA變量。在宏中,邏輯庫引用名可以 是任何表達式

的LibRef文件函數返回0,如果邏輯庫引用名已經被分配,或 如果邏輯庫引用名尚未分配返回一個非零值。

因此,要回答你的問題,該%if語句檢查是否sales已經被指定爲庫引用與否。如果不是%then %do部分將分配"/data/raw/sales/sales_a"sales

+0

謝謝!這有助於。我確實通過了關於此功能的SAS文檔,但我不確定是否正確。我需要某人確認它是如何工作的。謝謝 – RHelp

0

libref指向特定的「物理」路徑,可以分配和未分配。

甲邏輯庫引用名也可以是e.g Excel電子表格,並在這種情況下 - 分配和unssigning librefs是重要的。