|
|
5#

楼主 |
发表于 2010-3-17 20:31:12
|
只看该作者
Re: 如何将一组观测值按大小等分成n组?
[code:2oqg9431]%macro temp(in_ds,out_ds,group);
options nomprint nosymbolgen;
%let dsid=%sysfunc(open(&in_ds,i));
%let nobs=%sysfunc(attrn(&dsid,nlobs));
%let rc=%sysfunc(close(&dsid));
%let interval=%sysevalf(&nobs/&group,floor);
%let oddment=%sysevalf(%sysfunc(mod(&nobs,&group))/2,ceil);
data &in_ds;
set &in_ds;
retain _group 1;
if _n_>&oddment+1 then _group=ifn(mod(_n_-&oddment,&interval)=1,_group+1,_group);
_group=ifn(_group>&group,_group-1,_group);
run;
%do i=1 %to &group;
data &out_ds._&i(drop=_group);
set &in_ds (where=(_group=&i));
run;
%end;
%mend;[/code:2oqg9431] |
|