给种简单的方法
假设tmp 数据集除了 结果变量result 外的数据集
data tmp_01(keep=num name col_w)
tmp(keep=num name col_2010-col_2013)
;
set tmp;
format col_ $40.;
col_=catx(',',col_2010,col_2011,col_2012,col_2013);
n=countw(col_,',');
num=put(_n_,z2.);
do i=1 to n by 1;
col_w=scan(col_,i,col_);
end;
run;
proc sort data=tmp_01 nodupkey;by num name col_w;run;
data tmp_02;
set tmp_01;
by num name col_w;
retain result;
if first.num then
result=1;
else result=result+1;
if last.num;
run;
proc sql;
creat table result_ as
select a.*
,b.result
from tmp a
left outer join
tmp_02 b
on a.num=b.num
;
quit;
|