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!
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.