Date: Tue, 5 Aug 2003 20:06:13 -0700
Reply-To: Wei <wei112@HOTMAIL.COM>
Sender: "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From: Wei <wei112@HOTMAIL.COM>
Organization: http://groups.google.com/
Subject: Re: List manipulation
Content-Type: text/plain; charset=ISO-8859-1
Here is a data step solution:
data tst;
input Set $ Value $;
datalines;
1 A
1 B
1 C
2 D
3 A
3 F
4 H
4 I
4 J
4 K
5 K
5 A
;
proc sort data = tst;
by value;
run;
proc transpose data = tst out= tran(drop = _name_);
by value;
var set;
run;
proc print;
run;
data new(drop = i col:);
set tran;
by value;
array col(*) col:;
do i = 1 to dim(col) while(col(i) ^= '');
if i = 1 then newset = col(i);
else newset = trim(newset) || "_" || col(i);
end;
do i = 1 to dim(col) while(col(i) ^= '');
set = col(i);
l = length(newset);
output;
end;
run;
proc sort data = new;
by set descending l;
run;
data new(drop = newset set l);
set new;
by set;
retain s;
if first.set then s = newset;
run;
proc print; run;