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.
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
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.
Ready to level-up your skills? Choose your own adventure.