我的也是 x1-x8不能用,每次都得写个循环 靠 了
data a;
input x1 x2 x3 x4 x5 x6 x7 x8;
obs=_n_;
cards;
1 2 0 6 3 4 2 2
2 3 2 3 1 0 4 1
3 2 1 2 2 3 1 6
1 3 1 7 4 1 2 6
1 2 2 3 1 0 1 1
3 4 2 2 3 4 2 2
1 0 4 1 2 3 1 6
1 3 1 7 1 5 9 5
4 1 2 6 3 6 7 4
3 2 1 2 2 3 1 6
1 3 1 7 4 1 2 6
1 2 2 3 1 0 1 1
3 4 2 2 3 4 2 2
9 9 9 9 9 9 9 9
;
run;
%macro a(var);
data b;
set a;
proc sort data=b (keep=&var. obs);
by &var. ;
run;
data &var.;
set b;
by &var.;
if first.&var.=1 then do;
idx=1;
end;
else idx+1;
run;
proc sql;
create table &var. as select * ,max(idx) as num from &var. group by &var. ;
data &var.;
set &var.;
if num<3 then &var. =.;
drop num idx;
run;
proc sort data=&var.;
by obs;
run;
quit;
%mend a(var);
%macro b;
%do i=1 %to 8;
%a(x&i.);
%end;
data final(drop=obs);
merge %do i=1 %to 8;
x&i
%end;
;
run;
%mend b;
%b;


雷达卡



京公网安备 11010802022788号







