SAS,优雅的代码,数据名称。

时间:2018-03-27 17:37:00

标签: sas

我有一系列数据集,所以我将所有临时数据命名为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;

2 个答案:

答案 0 :(得分:0)

SAS已经有一个使用名称DATA1DATA2等的方法。您只需将名称留空,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工作表的良好实践:在表名前面加上创建它的处理类型以及源表/上下文的名称。

示例:

  • 使用PROC SQL加入客户表:SQL_JOIN_CUST_BASKET
  • 在户外产品上提取/过滤:EXT_PROD_OUTDOOR
  • 附加两张表2017/18:APPND_SALES_2017_18
  • 2017年按客户ID对销售额进行排序:SORT_CUST_Sales_ID

上述标准将使其他人更容易理解您的代码,更容易调试,并将帮助您记住代码在重新访问时所执行的操作。

注意:SAS表名不能超过32个字符;您可以从名称中删除元音以缩短它们。