在sas中设置具有相似名称的多个数据集

时间:2015-04-09 19:15:27

标签: sas datastep

假设我的工作环境中有不同数量的数据集,但所有数据集都以类似名称开头:name_abc,name_efg,name_1ky等。数据集具有相同的变量和特征,我想将它们全部设置到一个数据集。

data bigdataset;
    set [all datasets that begin with name_];
run;

有没有办法在没有输入所有数据集的情况下在SAS中执行此操作?我需要灵活处理工作环境中可用的数据集数量。

3 个答案:

答案 0 :(得分:2)

使用变量名称通配符:

data bigdataset;
 set name_:;
run;
  

变量名前缀后面的冒号选择其中的任何变量   name以该前缀开头。这种结肠的能力随之而来   一些简单的命名标准使程序员能够进行管理   临时变量更好,格式化更多变量更快,确定   未知数量的变量,清理宏生成的数据集,以及   缩短各种PROCS的代码。例如

data ADLB;
set  lb:;
     

此DATA步骤读取WORK库中以LB开头的所有数据集。另外,当程序员   编码这一步,他/她不需要知道有多少数据集   阅读,只是他/她想用a读取所有数据集   特殊前缀。冒号和破折号列表也适用于MERGE   言。

引自Using SAS Colon Effectively

答案 1 :(得分:1)

无论数据集是否具有公共前缀,这都将起作用。当然,对于您的情况,COLON修饰符是一个非常好的解决方案。

PROC SQL noprint;
    SELECT CATS(libname,".",memname) into :DSNS separated by " "
    FROM DICTIONARY.TABLES 
    WHERE UPCASE(LIBNAME)="YOUR_LIBNAME";
QUIT;
%Put DATA SETS: &DSNS;

Data BIGDATASET;
    Set &dsns;
Run;

答案 2 :(得分:0)

您可以使用冒号修饰符,例如下面将组合sashelp库中以prdsal开头的所有数据集:

data all ;
 set sashelp.prdsal: ;
run;