我正在寻找一种在SAS中创建汇总变量的方法,该变量将自动添加每行观察,直到满足条件。如有必要,我需要能够启动和停止并重置此变量。
非常感谢。
答案 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 ;