我有一系列数据集,所以我将所有临时数据命名为temp1,temp2,temp3,temp4,temp5 .......还有更优雅的方法吗?例如,只需直接调用最后生成的数据,或者我甚至无法想到的某种方法。
data temp1;
set test;
A=sum(A,B,C)
run;
proc sort data=temp1
by E;
run;
data temp2;
set temp1;
retain co_date;
E=M
run;
proc sql;
create table temp3 as
select
*
,sum(h) as p
,sum(a) as m
,sum(r) as c
from temp2
group by v;
quit;
data temp4;
set temp3;
if b=1;
run;
答案 0 :(得分:0)
SAS已经有一个使用名称DATA1
,DATA2
等的方法。您只需将名称留空,SAS就会使用系列中的下一个名称。
2 data ;
3 set sashelp.class;
4 run;
NOTE: There were 19 observations read from the data set SASHELP.CLASS.
NOTE: The data set WORK.DATA1 has 19 observations and 5 variables.
它将最近创建的数据集的名称存储到SYSLAST
宏变量中。因此,您可以将其用于您想要引用先前输出作为输入的位置。
data ;
set &syslast ;
if age < 14 ;
run;
或者您可以使用自己的宏变量进行计数,但您需要自己增加它。
%let dsnum=1;
data temp&dsnum;
set test;
A=sum(A,B,C)
run;
proc sort data=temp&dsnum ;
by E;
run;
data temp%eval(&dsnum+1);
set temp&dsnum;
retain co_date;
E=M
run;
%let dsnum=%eval(&dsnum+1);
proc sql;
create table temp%eval(&dsnum+1) as
select
*
,sum(h) as p
,sum(a) as m
,sum(r) as c
from temp&dsnum
group by v
;
quit;
%let dsnum=%eval(&dsnum+1);
答案 1 :(得分:0)
在ETL |数据集成过程/计划中命名SAS工作表的良好实践:在表名前面加上创建它的处理类型以及源表/上下文的名称。
示例:
上述标准将使其他人更容易理解您的代码,更容易调试,并将帮助您记住代码在重新访问时所执行的操作。
注意:SAS表名不能超过32个字符;您可以从名称中删除元音以缩短它们。