在SAS中创建摘要变量的简便方法

时间:2009-06-02 18:47:26

标签: variables sas summary

我正在寻找一种在SAS中创建汇总变量的方法,该变量将自动添加每行观察,直到满足条件。如有必要,我需要能够启动和停止并重置此变量。

非常感谢。

2 个答案:

答案 0 :(得分:3)

使用保留!

data test;
set test;
retain VarSummary;
VarSummary+YourVar;
if condition then VarSummary=SummatElse;
run;

希望这是有道理的!

答案 1 :(得分:0)

如果您打算使用

之类的声明
VarSummary + 1  ; 

OR

VarSummary + <expression> ;

然后你实际上不需要RETAIN语句。

此外,如果在DATA STEP中使用BY语句,则可以访问变量FIRST和LAST(数据必须按BY变量排序)。 FIRST和LAST的值为1或0.当BY变量在第一个值FIRST上时。 = 1,当它在最后一个值LAST时。当只有1个变量记录时,它们都可以等于1,当有超过2个变量记录时(当在中间记录上时)它们都可以等于0。

FIRST和LAST可以帮助确定何时重置RETAINed变量。 (FIRST和LAST将在PDV中,但不会写入输出数据集,因此不需要DROP它们。)

实施例

(这个例子的结果可能是用PROC完成的,但我希望这能说明如何使用FIRST和LAST)

proc sort data=sasuser.laguardia out=work.dest;
 by dest ;
run ;

data work.destination_summary (keep=dest dest_count total_count) ;
 set work.dest ;
 by dest ;

 total_count + 1 ;

 if first.dest then dest_count = 1 ;
 if not first.dest and not last.dest then dest_count + 1 ;
 if last.dest then do ;
  dest_count + 1 ;
  output ;
 end ;
run ;

proc print data=work.destination_summary label noobs ;
 var dest dest_count total_count;
 label Dest="Destination"
   dest_count="Count" 
   total_count= "Total Count";
run ;