I would like to assign group id for same values,
like showed below, if I have code_name, how to get group id number?
code_name group_id_number
aa 1
aa 1
aa 1
bb 2
cc 3
cc 3
dd 4
ee 5
ff 6
gg 7
gg 7
. .
. .
. .
Although a retain statement is not needed when you use the s_id + 1 syntax, I like to use it for initializing:
data test;
set test2 (keep = codename);
by codename;
retain s_id 0;
if first.codename then s_id + 1;
run;
Edit: fixed a typo in the by statement (wrong underline)
Here is my code:
data test;
set test2 (keep = codename);
by code_name;
s_id = _n_ = 0;
if first.codename then s_id + 1;
run;
proc print data = test (obs = 100);
var codename s_id;
run;
And the out are something like this:
It only assign "1" to the very first codename and the duplicates will just have 0 assigned
aa 1
aa 0
aa 0
bb 1
cc 1
cc 0
dd 1
ee 1
ff 1
gg 1
gg 0
. .
. .
. .
Although a retain statement is not needed when you use the s_id + 1 syntax, I like to use it for initializing:
data test;
set test2 (keep = codename);
by codename;
retain s_id 0;
if first.codename then s_id + 1;
run;
Edit: fixed a typo in the by statement (wrong underline)
Thanks!!
It worked perfectly!
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.