首页 > 解决方案 > 我可以让 SAS 连接整个数据集文件夹吗?

问题描述

我正在处理的数据似乎每年都被分成几乎任意的集合。我想做的是能够首先将所有 .sas7bdat 文件连接到一个库中。我该怎么办?

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

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

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

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

标签: sas

解决方案


在 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 等,常用名称在这里无关紧要。


推荐阅读