SAS中的Libref功能

时间:2014-02-24 06:53:37

标签: if-statement sas

我是SAS新手,我正在尝试解码SAS代码。在脚本的开头,代码有一行代表 -

%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语句。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

SAS文档是您的朋友。

一个简单的google search让我LIBREF Function page of the SAS documentation

它将LIBREF函数描述为:

  

指定要验证的libref。在DATA步骤中,libref可以是a   字符表达式,用引号括起来的字符串或DATA   step变量,其值包含libref。在宏中,libref可以   是任何表达

     

如果已分配libref,则LIBREF函数返回0,或   如果尚未分配libref,则返回非零值。

因此,要回答您的问题,%if语句正在检查是否已将sales指定为库引用。如果不是,%then %do部分会将"/data/raw/sales/sales_a"分配给sales

答案 1 :(得分:0)

libref指向特定的“物理”路径,可以分配和取消分配。

libref也可以是例如excel电子表格,在这种情况下 - 分配和取消分配librefs很重要。