Hi, everyone. I have another sorting question. I would appreciate it if you could help me.This is the code for a simplified example. data have; input ORD FV $ STATE $ SUM; datalines; 1 apple all 21 2 apple a 7 3 apple b 14 1 carrot all 30 2 carrot a 13 3 carrot b 17 1 banana all 19 2 banana a 4 3 banana b 15 ; run; The FV variable shows those fruit or vegetables, STATE variable shows their states. There are only three states, 'a' or 'b'(maybe pieces or juice) or 'all' means both of them. SUM is the variable shows the quantity we have. And I already have the ORD variable for inner sorting. I want to sort them using SUM, but group by FV, which means for example, carrot's 'all' is the max SUM and should be the first obs and all of its states('a' 'b') should follow after it as a group settled down on 2 and 3 obs. The code below is my solution, I need the new order variable SEQ, could it be more easier such as just in one step or do not need split dataset? Really thank you for your reading and thinking. proc sql noprint;
create table all as select * from have where state='all' order by sum desc;
quit;
data all;
set all;
seq+1;output;
run;
proc sql noprint;
create table want as
select a.*,b.seq
from have as a left join all as b
on a.fv=b.fv
;
quit;
proc sort data= want;
by seq ord;
run;
... View more