- data x;
- input u a b $;
- cards;
- 1 1 i
- 1 2 u
- 1 3 o
- 1 3 p
- 1 5 y
- 2 1 p
- 2 4 o
- 2 5 y
- ;
- proc sort;by u a;run;
- data x1;
- set x;
- by u a;
- if last.a;
- run;
- data y;
- if 0 then set x1;
- if _n_ = 1 then do;
- declare hash h(dataset:'x1');
- h.definekey('u','a');
- h.definedata(all:'yes');
- h.definedone();
- end;
- set x;
- by u a;
- output;
- if first.u then do;
- flag=1;
- do a=1 to 5;
- if h.find(key:u,key:a) then do;
- if flag=1 then do;
- h.replace();
- output;
- flag=0;
- end;
- end;
- end;
- end;
- drop flag;
- run;
- proc sort;by u a;run;
结果对了。不知道是否满足你的要求。
有个问题,就是a如果重复出现,在retain时,没想到特别好的解决方法。
我只想到暂时用data步把hash进内存的表提前做了修改。


雷达卡




京公网安备 11010802022788号







