我可以让SAS连接到整个数据集文件夹吗?

时间:2019-04-11 21:51:51

标签: sas

我正在处理似乎每年都会分成几乎任意集合的数据。我想做的是能够通过将单个库中的所有.sas7bdat文件连接起来开始。我该怎么办?

或者,如果我知道可能为库中的文件分配了所有可能的名称(但任何给定库中可能都缺少许多名称),如何使SAS忽略丢失的文件?例如,假设我知道我的库中的所有.sas7bdat文件都具有名称“ set01”,“ set02”,“ set03”或“ set04”之一。如果某个特定的库(“ L”)缺少其中之一,则数据步骤为:

DATA temp;
  SET L.set01 L.set02 L.set03 L.set04;
  RUN;

将产生一个错误。假设我知道其中至少有一个存在,是否有一个选项可以告诉SAS忽略丢失的选项?

(我知道这是两个完全不同的问题,但是任何一个都可以解决我的紧迫问题。)

1 个答案:

答案 0 :(得分:1)

在SAS中,SAS有一种简单的方法可以自动选择以某个通用名称开头的数据集,您可以使用以下语句:

data temp;
 set L.set0: ; /*It will search for all datasets that start with set0 and will set only those which are available*/
run;

它可以回答您的查询吗?

第二种方法

libname L "Y:\Test Data";

proc sql;
  select strip("L."||memname) into :DSNAME separated by ' '
    from dictionary.tables
    where libname='L';
quit;

/* Main final DS*/
data want;
  set &DSNAME;
run;

它将提取L目录中的所有数据集名称,并创建宏变量DSNAME,例如:L.set01 L.oth02等。通用名称在这里无关紧要。