有一组数是这样的:
code name n
1 aa 0
1 1
1 2
1 cc 0
1 1
2 bb 0
2 1
2 2
我想处理成这样子的:
code name n
1 aa 0
1 aa 1
1 aa 2
1 cc 0
1 cc 1
2 bb 0
2 bb 1
2 bb 2
就是相当于采用函数name=lag&n(name)来处理,这个怎么操作啊?
谢谢大家!!!
data crackman;
missing m;
input code name$ n;
cards;
1 aa 0
1 m 1
1 m 2
1 cc 0
1 m 1
2 bb 0
2 m 1
2 m 2
;
run;
data crackman(drop=name1 name2);
set crackman;
name1=lag(name);
name2=lag2(name);
if n=1 then name=name1;
if n=2 then name=name2;
run;
proc sql;
select max(n) as n into:n from crackman where name='m';
quit;
%crackman;
%macro crackman;
data crackman4;
set crackman;
%do i=1 %to &n.;
name&i.=lag&i.(name);
if n=&i. then name=name&i.;
drop name&i.;
%end;
run;
%mend crackman;