- data have;
- input a $ s $ d $;
- cards;
- q w e
- w w w
- . . e
- q . w
- ;run;
- data one;
- set have end = last;
- id = _n_;
- if last then call symputx('last_n',_n_);
- run;
- data want;
- if 0 then set one(rename = (a=a1 s=s1 d=d1 id=i));
- if _n_ = 1 then do;
- dcl hash h(dataset:'one(rename = (a=a1 s=s1 d=d1 id=i))');
- h.definekey('i');
- h.definedata(all:'y');
- h.definedone();
- end;
- array flag f_a f_s f_d;
- array orig $ a s d;
- array comp $ a1 s1 d1;
- set one;
- do i = id + 1 to &last_n.;
- compare = catx('-',id,i);
- rc = h.find(key:i);
- do over flag;
- flag = ~compare(orig,comp);
- end;
- output;
- end;
- drop a1 s1 d1 a s d i rc id;
- run;