proc sort data=a;
by ID;
run;
%Macro divide1(N=);
%Do i=1 %to &N;
Data D&i;
set a;
NewID=input(ID,3.);
run;
Data D&i;
Set D&i;
by NewID;
where NewID=&i;
count=_N_;
run;
Data D&i;
Set D&i;
if count>3;
run;
%end;
%Mend divide1;
%divide1(N=5);
另外如果我生成了很多临时数据集,如何判断哪个数据集含有0个观测?然后把这些含有0个观测的数据集删除?因为有很多数据集,事先我并不知道数据集的名字。看过以前的帖子,判断是否有0个观测时,已经知道了数据集的名字,再用编程判断感觉没什么实际意义作者: shiyiming 时间: 2007-2-13 14:30 标题: re: sashelp.vtable中的字段nobs,表示表的记录数作者: shiyiming 时间: 2007-2-13 20:34 标题: re 用data step的first.variable last.variable就可以了。再储存一下前三个的个数、和就可以了。
没有这么复杂吧。作者: shiyiming 时间: 2007-2-13 20:43 标题: re data themean;
retain number sum numbertemp sumtemp 0;
set a;
keep id agemean;
by id;
if first.id then do;number=0; sum=0;end;
sum+dosage;
number+1;
if number=3 then do;numbertemp=number; sumtemp=sum;end;
if last.id then do;
if number>3 then do; number+(-3); sum=sum-sumtemp;
agemean=sum/number; end;
else agemean=sumtemp/numbertemp;
output;
end;
run;
proc print;run;