假设我的工作环境中有不同数量的数据集,但所有数据集都以类似名称开头:name_abc,name_efg,name_1ky等。数据集具有相同的变量和特征,我想将它们全部设置到一个数据集。
data bigdataset;
set [all datasets that begin with name_];
run;
有没有办法在没有输入所有数据集的情况下在SAS中执行此操作?我需要灵活处理工作环境中可用的数据集数量。
答案 0 :(得分:2)
使用变量名称通配符:
data bigdataset;
set name_:;
run;
变量名前缀后面的冒号选择其中的任何变量 name以该前缀开头。这种结肠的能力随之而来 一些简单的命名标准使程序员能够进行管理 临时变量更好,格式化更多变量更快,确定 未知数量的变量,清理宏生成的数据集,以及 缩短各种PROCS的代码。例如
data ADLB; set lb:;
此DATA步骤读取WORK库中以LB开头的所有数据集。另外,当程序员 编码这一步,他/她不需要知道有多少数据集 阅读,只是他/她想用a读取所有数据集 特殊前缀。冒号和破折号列表也适用于MERGE 言。
答案 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;