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!
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
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.