data a ;
input a$ b c ;
cards;
zhang 1 .
zhang . 2
wang 3 .
wang . 4
;
run;
proc sort data=a;
by a;
data b(keep=a d);
format b1 c1 $12.;
set a;
by a;
retain b1 c1;
if first.a then do;
b1=trim(left(b));
c1=trim(left(c));
end;
else do;
b1=trim(left(b1))||trim(left(b));
c1=trim(left(c1))||trim(left(c));
end;
d=compbl(compress(b1||c1,'.','l'));
if last.a then output;
run;
proc sort data=a;
by a;
data b(keep=a d);
format b1 c1 $12.;
set a;
by a;
retain b1 c1;
if first.a then do;
b1=trim(left(b));
c1=trim(left(c));
end;
else do;
b1=trim(left(b1))||trim(left(b));
c1=trim(left(c1))||trim(left(c));
end;
d=compbl(compress(b1||c1,'.','l'));
if last.a then output;
run;