<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: assigning group identifiers in SAS Data Management</title>
    <link>https://communities.sas.com/t5/SAS-Data-Management/assigning-group-identifiers/m-p/305427#M8718</link>
    <description>&lt;P&gt;Well, these two points:&lt;/P&gt;
&lt;P&gt;1) First, I would like to use unique combinations of 'company by date' for assigning the first group identifiers to each observation, not just 'company', so 'company: AB - date: 3' combination should be different from 'company: AB - date: 4' combination.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;2) Within each subgroup defined by unique 'company-date' combination, I would like to assign unique identifer for each worker.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Are both covered by one answer - create a variable which contains your unique by group, then replace company in my datastep, with this new variable which contains the distinct group.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The second part would be a separate step, you need to find the number of workers per group and join this back to the main dataset, then use that in the datastep, maybe something like:&lt;/P&gt;
&lt;PRE&gt;proc sql;
  create table TMP as
  select COMPANY_DATE,
         count(distinct WORKER) as NUM_WORKERS
  from   HAVE
  group by COMPANY_DATE;

  create table HAVE1 as
  select A.*,
         B.NUM_WORKERS
  from   HAVE A
  left join TMP B
  on     A.COMPANY_YEAR=B.COMPANY_YEAR;
quit;

data want;
  set have;
  retain company_loop worker_loop worker_num;
  by company_date worker;
  if first.company_date then company_loop=sum(company_loop,1);
  if first.worker then do;
    worker_loop=sum(worker_loop,1);
    num_workers=num_workers-1;
  end;
run;&lt;/PRE&gt;</description>
    <pubDate>Tue, 18 Oct 2016 16:25:00 GMT</pubDate>
    <dc:creator>RW9</dc:creator>
    <dc:date>2016-10-18T16:25:00Z</dc:date>
    <item>
      <title>assigning group identifiers</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/assigning-group-identifiers/m-p/305366#M8709</link>
      <description>&lt;P&gt;Hi. I would like to assign two different kinds of group identifiers to each obsevation, using the example data shown below, one for 'company by date' and another for 'worker' within 'company by date' subgroups, along with assigning the maximum number for 'worker' for a different column:&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data temp;&lt;BR /&gt;input company $1-2 date worker $6;&lt;BR /&gt;datalines;&lt;BR /&gt;AB 3 K&lt;BR /&gt;AB 3 K&lt;BR /&gt;AB 3 R&lt;BR /&gt;AB 3 R&lt;BR /&gt;AB 3 S&lt;BR /&gt;AB 3 T&lt;BR /&gt;AB 4 T&lt;BR /&gt;AB 4 T&lt;BR /&gt;AB 4 U&lt;BR /&gt;AB 4 U&lt;BR /&gt;AB 4 V&lt;BR /&gt;CF 4 A&lt;BR /&gt;CF 4 A&lt;BR /&gt;CF 4 B&lt;BR /&gt;CF 4 B&lt;BR /&gt;CF 5 T&lt;BR /&gt;CF 5 T&lt;BR /&gt;CF 5 E&lt;BR /&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And the final output should be look like one shown below:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;SAS Output&lt;/P&gt;&lt;DIV class="branch"&gt;&lt;DIV&gt;&lt;DIV align="center"&gt;company date &amp;nbsp;worker &amp;nbsp;company_loop &amp;nbsp;worker_loop &amp;nbsp;worker_num &lt;TABLE cellspacing="0" cellpadding="5"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;AB&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;K&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AB&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;K&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AB&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;R&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AB&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;R&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AB&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;S&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AB&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;T&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AB&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;T&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AB&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;T&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AB&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;U&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AB&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;U&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AB&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;V&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;CF&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;CF&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;CF&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;CF&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;CF&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;T&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;CF&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;T&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;CF&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;E&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class="branch"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;These kinds of operations are relatively straightforward using Stata, but when it comes to SAS, I cannot come up with some possible intuitive solutions for those operations. Is there any simple solution to those operations? Thank you!&lt;/P&gt;&lt;DIV class="branch"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="branch"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="branch"&gt;&amp;nbsp;&lt;/DIV&gt;</description>
      <pubDate>Tue, 18 Oct 2016 13:49:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/assigning-group-identifiers/m-p/305366#M8709</guid>
      <dc:creator>sas_user_k</dc:creator>
      <dc:date>2016-10-18T13:49:45Z</dc:date>
    </item>
    <item>
      <title>Re: assigning group identifiers</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/assigning-group-identifiers/m-p/305368#M8710</link>
      <description>&lt;P&gt;Yes, quite simple. &amp;nbsp;In a datastep, do a by with all the group levels, and have each of your output variables as retain:&lt;/P&gt;
&lt;PRE&gt;data want;
  set have;
  retain company_loop worker_loop worker_num;
  by company worker;
  if first.company then company_loop=sum(company_loop,1);
  if first.worker then worker_loop=sum(worker_loop,1);
run;&lt;/PRE&gt;
&lt;P&gt;What I do not understand is what worker_num is, and how it is defined?&lt;/P&gt;</description>
      <pubDate>Tue, 18 Oct 2016 13:57:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/assigning-group-identifiers/m-p/305368#M8710</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2016-10-18T13:57:55Z</dc:date>
    </item>
    <item>
      <title>Re: assigning group identifiers</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/assigning-group-identifiers/m-p/305422#M8716</link>
      <description>&lt;P&gt;Thank you for your response, but there are three emaining issues for that problem:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;1) First, I would like to use unique combinations of 'company by date' for assigning the first group identifiers to each observation, not just 'company', so 'company: AB - date: 3' combination should be different from 'company: AB - date: 4' combination.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;2) Within each subgroup defined by unique 'company-date' combination, I would like to assign unique identifer for each worker.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;3) As for the 'worker_num', it is the number of unique workers within a certain 'company-date' pair subgroup. For example, within the subgroup shown below ('company: AB - date: 4' combination subgroup), there are three unique workers ('T', 'U', 'V') within this subgroup. Thank you!&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;AB 4 T&lt;BR /&gt;AB 4 T&lt;BR /&gt;AB 4 U&lt;BR /&gt;AB 4 U&lt;BR /&gt;AB 4 V&lt;/P&gt;</description>
      <pubDate>Tue, 18 Oct 2016 16:10:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/assigning-group-identifiers/m-p/305422#M8716</guid>
      <dc:creator>sas_user_k</dc:creator>
      <dc:date>2016-10-18T16:10:28Z</dc:date>
    </item>
    <item>
      <title>Re: assigning group identifiers</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/assigning-group-identifiers/m-p/305427#M8718</link>
      <description>&lt;P&gt;Well, these two points:&lt;/P&gt;
&lt;P&gt;1) First, I would like to use unique combinations of 'company by date' for assigning the first group identifiers to each observation, not just 'company', so 'company: AB - date: 3' combination should be different from 'company: AB - date: 4' combination.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;2) Within each subgroup defined by unique 'company-date' combination, I would like to assign unique identifer for each worker.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Are both covered by one answer - create a variable which contains your unique by group, then replace company in my datastep, with this new variable which contains the distinct group.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The second part would be a separate step, you need to find the number of workers per group and join this back to the main dataset, then use that in the datastep, maybe something like:&lt;/P&gt;
&lt;PRE&gt;proc sql;
  create table TMP as
  select COMPANY_DATE,
         count(distinct WORKER) as NUM_WORKERS
  from   HAVE
  group by COMPANY_DATE;

  create table HAVE1 as
  select A.*,
         B.NUM_WORKERS
  from   HAVE A
  left join TMP B
  on     A.COMPANY_YEAR=B.COMPANY_YEAR;
quit;

data want;
  set have;
  retain company_loop worker_loop worker_num;
  by company_date worker;
  if first.company_date then company_loop=sum(company_loop,1);
  if first.worker then do;
    worker_loop=sum(worker_loop,1);
    num_workers=num_workers-1;
  end;
run;&lt;/PRE&gt;</description>
      <pubDate>Tue, 18 Oct 2016 16:25:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/assigning-group-identifiers/m-p/305427#M8718</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2016-10-18T16:25:00Z</dc:date>
    </item>
    <item>
      <title>Re: assigning group identifiers</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/assigning-group-identifiers/m-p/305477#M8724</link>
      <description>&lt;P&gt;(I have no idea why my reply keeps being deleted after posting it. I upload it again.)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you for your answer, but I have one final question. I would like to assign unique 'worker' identifiers ('worker_loop')&amp;nbsp;&lt;U&gt;within a certain 'company-date' combination subgroup ('company_loop').&lt;/U&gt;&amp;nbsp;For example,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;company &amp;nbsp;date &amp;nbsp;company_loop &amp;nbsp;worker &amp;nbsp;worker_loop&lt;/P&gt;&lt;P&gt;AB &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3 &amp;nbsp; &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; K &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;STRONG&gt;&lt;U&gt;1&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;AB &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3 &amp;nbsp; &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; K &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&lt;/P&gt;&lt;P&gt;AB &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3 &amp;nbsp; &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; R &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2&lt;/P&gt;&lt;P&gt;AB &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3 &amp;nbsp; &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; R &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2&lt;/P&gt;&lt;P&gt;AB &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3 &amp;nbsp; &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; S &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 3&lt;/P&gt;&lt;P&gt;AB &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3 &amp;nbsp; &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; T &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 4&lt;/P&gt;&lt;P&gt;AB &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4 &amp;nbsp; &amp;nbsp; &amp;nbsp; 2 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; T &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;U&gt;&lt;STRONG&gt;1&lt;/STRONG&gt;&lt;/U&gt;&lt;/P&gt;&lt;P&gt;AB &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4 &amp;nbsp; &amp;nbsp; &amp;nbsp; 2 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; T &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&lt;/P&gt;&lt;P&gt;AB &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4 &amp;nbsp; &amp;nbsp; &amp;nbsp; 2 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; U &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2&lt;/P&gt;&lt;P&gt;AB &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4 &amp;nbsp; &amp;nbsp; &amp;nbsp; 2 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; U &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2&lt;/P&gt;&lt;P&gt;AB &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4 &amp;nbsp; &amp;nbsp; &amp;nbsp; 2 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; V &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 3&lt;/P&gt;&lt;P&gt;CF &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4 &amp;nbsp; &amp;nbsp; &amp;nbsp; 3 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; A &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;STRONG&gt;&lt;U&gt;1&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;CF &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4 &amp;nbsp; &amp;nbsp; &amp;nbsp; 3 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; A &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&lt;/P&gt;&lt;P&gt;CF &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4 &amp;nbsp; &amp;nbsp; &amp;nbsp; 3 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; B &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;As you can see above, the 'worker_loop' should restart to 1 when the subgroup ('company_loop') is changed while taking into account unique 'worker' cases within the subgroup. Is there any way that I can assign identfiers within the subgroup? Thank you!&lt;/P&gt;</description>
      <pubDate>Tue, 18 Oct 2016 18:18:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/assigning-group-identifiers/m-p/305477#M8724</guid>
      <dc:creator>sas_user_k</dc:creator>
      <dc:date>2016-10-18T18:18:03Z</dc:date>
    </item>
    <item>
      <title>Re: assigning group identifiers</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/assigning-group-identifiers/m-p/305603#M8728</link>
      <description>&lt;P&gt;Ok, so what have you tried? &amp;nbsp;The code here:&lt;/P&gt;
&lt;PRE&gt;data want;
  set have;
  retain company_loop worker_loop worker_num;
  by company worker;
  if first.company then company_loop=sum(company_loop,1);
  if first.worker then worker_loop=sum(worker_loop,1);
run;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Shows you everythnig you need to know about grouping the data, retain counts, and you just need to manipulate your data to get this cmpany date variable.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 19 Oct 2016 08:26:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/assigning-group-identifiers/m-p/305603#M8728</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2016-10-19T08:26:11Z</dc:date>
    </item>
    <item>
      <title>Re: assigning group identifiers</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/assigning-group-identifiers/m-p/305638#M8729</link>
      <description>&lt;P&gt;Thank you but the code you suggested doesn't seem to work properly. Here are the codes that I have tried based on your previous recommendations and the corresponding results. The code blocks #(1) and (2) work properly, but #(3) doesn't. Please pay attention to the code block #(3).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data temp; 
input company $1-2 date worker $6;
datalines;
AB 3 K
AB 3 K
AB 3 R
AB 3 R
AB 3 S
AB 3 T
AB 4 T
AB 4 T
AB 4 U
AB 4 U
AB 4 V
CF 4 A
CF 4 A
CF 4 B
CF 4 B
CF 5 T
CF 5 T
CF 5 E
; 

proc sort data=temp; 
by company date worker; 

/* (1) For assining 'company by date' combination identifiers */
data temp2;
  set temp;
  retain company_loop;
  by company date worker;
  if first.date then company_loop=sum(company_loop,1);
run;

/* (2) For assigning the number of unique workers withint each 'company by date' subgroup' */
proc sql;
	create table tmp
	as select company_loop, count(distinct worker) as worker_num
	from temp2
	group by company_loop;

	create table temp3
	as select a.*, b.worker_num
	from temp2 a left join tmp b
	on a.company_loop=b.company_loop;
quit;

proc sort data=temp3;
	by company_loop worker;
run;

/* (3) For assigning ID for each unique 'worker' within each 'company by date' subgroup - doesn't work */
data temp4;
	set temp3;
	retain worker_loop;
	by company_loop worker;
	if first.worker then worker_loop=sum(worker_loop,1);
run;

proc print data=temp4;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is the result. The columns 'company_loop' and 'worker_num' are the ones that I want to derive, but for the column 'worker_loop', it's not.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;SAS Output&lt;/P&gt;&lt;DIV class="branch"&gt;&lt;TABLE border="0" cellspacing="1" cellpadding="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;The SAS System&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;DIV align="center"&gt;company &amp;nbsp;date &amp;nbsp;worker &amp;nbsp;company_loop &amp;nbsp;worker_num &amp;nbsp;worker_loop &lt;TABLE cellspacing="0" cellpadding="5"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;AB&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;K&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AB&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;K&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AB&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;R&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AB&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;R&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AB&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;S&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AB&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;T&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AB&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;T&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AB&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;T&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AB&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;U&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AB&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;U&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AB&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;V&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;CF&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;CF&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;CF&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;CF&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;CF&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;E&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;CF&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;T&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;11&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;CF&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;T&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;11&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 19 Oct 2016 11:38:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/assigning-group-identifiers/m-p/305638#M8729</guid>
      <dc:creator>sas_user_k</dc:creator>
      <dc:date>2016-10-19T11:38:58Z</dc:date>
    </item>
    <item>
      <title>Re: assigning group identifiers</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/assigning-group-identifiers/m-p/305641#M8730</link>
      <description>&lt;P&gt;You need to add a reset of the worker_loop at first.company_date:&lt;/P&gt;
&lt;PRE&gt;data temp; 
  input company $1-2 date worker $6;
  company_date=cats(company,"_",date);
datalines;
AB 3 K
AB 3 K
AB 3 R
AB 3 R
AB 3 S
AB 3 T
AB 4 T
AB 4 T
AB 4 U
AB 4 U
AB 4 V
CF 4 A
CF 4 A
CF 4 B
CF 4 B
CF 5 T
CF 5 T
CF 5 E
; 
run;

proc sort data=temp; 
  by company_date worker;
run;

proc sql;
  create table TMP as 
  select  COMPANY_DATE, 
          count(distinct WORKER) as WORKER_NUM&lt;BR /&gt;  from    TEMP
  group by COMPANY_DATE;

  create table TEMP2 as 
  select  A.*, 
          B.WORKER_NUM
  from    TEMP A
  left join TMP B
  on      A.COMPANY_DATE=B.COMPANY_DATE;
quit;

data temp3;&lt;BR /&gt;  set temp2;
  retain company_loop worker_loop;
  by company_date worker;
  if first.company_date then do;
    company_loop=sum(company_loop,1);
    worker_loop=0;
  end;
  if first.worker then worker_loop=sum(worker_loop,1);
run;
&lt;/PRE&gt;
&lt;P&gt;I would advise to not use Tabs in your code as this renders differently over different viewers - you can change this so that when you press tab it puts in X amount of spaces (in Base SAS it is under Tools-&amp;gt;Options-&amp;gt;Enhanced Editor-&amp;gt;General Tab, insert spaces for tabs.&lt;/P&gt;</description>
      <pubDate>Wed, 19 Oct 2016 12:07:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/assigning-group-identifiers/m-p/305641#M8730</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2016-10-19T12:07:06Z</dc:date>
    </item>
    <item>
      <title>Re: assigning group identifiers</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/assigning-group-identifiers/m-p/305643#M8731</link>
      <description>&lt;P&gt;Thank you so much for all the responses and tips! The results are now what I want to derive.&lt;/P&gt;</description>
      <pubDate>Wed, 19 Oct 2016 12:11:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/assigning-group-identifiers/m-p/305643#M8731</guid>
      <dc:creator>sas_user_k</dc:creator>
      <dc:date>2016-10-19T12:11:53Z</dc:date>
    </item>
  </channel>
</rss>

