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!
Available on demand!
Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.
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.