Hi all,
I have the following
How is it possible to sort the dataset by 2 variables and assign a Sequence Number in one step?
data test;
length division group $2.;
infile datalines;
input division group;
datalines;
a t1
b m2
a t1
b m2
a t2
a t2
a t2
b m2
a t1
b m1
b m1
a t2
;
run;
proc print data=test; run;
I need the following output:
Like this?
data test;
input division$ group$;
datalines;
a t1
b m2
a t1
b m2
a t2
a t2
a t2
b m2
a t1
b m1
b m1
a t2
;
proc sort data=test;
by division group;
run;
data want;
set test;
by division group;
Seq+1;
if first.group then Seq=1;
run;
Like this?
data test;
input division$ group$;
datalines;
a t1
b m2
a t1
b m2
a t2
a t2
a t2
b m2
a t1
b m1
b m1
a t2
;
proc sort data=test;
by division group;
run;
data want;
set test;
by division group;
Seq+1;
if first.group then Seq=1;
run;
Anytime, glad to help 🙂
There are many ways to do the sorting in SAS, for example
proc sort data=test out=want;
by division group;
run;
Or:
proc sql;
create table want as
select * from test
order by division, group
;
quit;
Also, Hash object can also do sort, but it will be overdone for your purpose.
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.