<?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 Assign sequential ID by multiple groups in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/34452#M8412</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for the great advice from everyone. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I've a maybe not so related question and I thought I would just ask here instead of creating a new subject entry.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I want to compare data between records by ID, admission date and a group variable. If Group is the same between two consecutive lines (w/n the same admission), then combine the record and output the appropriate dates so that I can calculate the time elapse between dates.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data test; input pid $ admission_date1 $ assessment_date group $;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/1/2011&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/3/2011&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/1/2011&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/9/2011&amp;nbsp;&amp;nbsp; B&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3/4/2011&amp;nbsp;&amp;nbsp;&amp;nbsp; 4/2/2011&amp;nbsp;&amp;nbsp; B&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3/4/2011&amp;nbsp;&amp;nbsp;&amp;nbsp; 4/8/2011&amp;nbsp;&amp;nbsp; B&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;﻿2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6/1/2010&amp;nbsp;&amp;nbsp;&amp;nbsp; 6/4/2011&amp;nbsp;&amp;nbsp; C&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6/5/2010&amp;nbsp;&amp;nbsp;&amp;nbsp; 7/4/2011&amp;nbsp;&amp;nbsp; C&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7/1/2011&amp;nbsp;&amp;nbsp;&amp;nbsp; 7/9/2011&amp;nbsp;&amp;nbsp; D&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Desired output:&lt;/P&gt;&lt;P&gt;PID&amp;nbsp; Adm date&amp;nbsp; Date1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Date2&amp;nbsp; Group&amp;nbsp; &lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/1/2011&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/1/2011&amp;nbsp; 1/3/2011&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *admission date repeating for each record, the first record's date1=admission date&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/1/2011&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/3/2011&amp;nbsp; 1/9/2011&amp;nbsp;&amp;nbsp;&amp;nbsp; B&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *In the subsequent record, date1=date from the previous record &lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3/4/2011&amp;nbsp;&amp;nbsp;&amp;nbsp; 3/4/2011&amp;nbsp; 4/8/2011&amp;nbsp;&amp;nbsp;&amp;nbsp; B&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *Group D is the same between records w/n the same admission, so output as a single record and appr. date&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6/1/2010&amp;nbsp;&amp;nbsp;&amp;nbsp; 6/12010&amp;nbsp;&amp;nbsp; 6/4/2011&amp;nbsp;&amp;nbsp;&amp;nbsp; C&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6/5/2010&amp;nbsp;&amp;nbsp;&amp;nbsp; 6/5/2010&amp;nbsp; 7/4/2011&amp;nbsp;&amp;nbsp;&amp;nbsp; C&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7/1/2011&amp;nbsp;&amp;nbsp;&amp;nbsp; 7/1/2011&amp;nbsp; 7/9/2011&amp;nbsp;&amp;nbsp;&amp;nbsp; D&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope the above makes sense. (The real data is more complicate). And thanks for whatever help you can give.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 20 Jul 2011 23:27:05 GMT</pubDate>
    <dc:creator>Solph</dc:creator>
    <dc:date>2011-07-20T23:27:05Z</dc:date>
    <item>
      <title>Assign sequential ID by multiple groups</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/34443#M8403</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I wanted to create sequent numbers for people who have multiple assessments within each admission and a person can have multiple admissions within a year. I sorted the data first by ID and then by admission date. I saw SAS examples for single group and it worked fine if I just want to assing sequential number for each patient:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want; set original;&lt;/P&gt;&lt;P&gt;by p﻿id; &lt;/P&gt;&lt;P&gt;if first.pid then seq_id=1;&lt;/P&gt;&lt;P&gt;else seq_id+1;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Then the data would look like following:&lt;/P&gt;&lt;P&gt;PID&amp;nbsp; Date&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Seq_ID&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/1/2011&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/1/2011&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3/4/2011&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5/1/2010&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6/3/2010&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But when I tried to expand the code to assign sequential numbers for each patient w/n the same admission, the results don't look right (seems to be the same as the above);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want; set original;&lt;/P&gt;&lt;P&gt;by p﻿id date;&lt;/P&gt;&lt;P&gt;if first.pid and first.date then seq_id=1;&lt;/P&gt;&lt;P&gt;else seq_id+1;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I want the data look like the following:&lt;/P&gt;&lt;P&gt;PID&amp;nbsp; Date&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Seq_ID&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/1/2011&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/1/2011&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3/4/2011&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5/1/2010&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6/3/2010&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It should be a simple question and I did google first before asking. Thanks in advance for any help.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 20 Jul 2011 18:17:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/34443#M8403</guid>
      <dc:creator>Solph</dc:creator>
      <dc:date>2011-07-20T18:17:29Z</dc:date>
    </item>
    <item>
      <title>Assign sequential ID by multiple groups</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/34444#M8404</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You want to reset the counter when FIRST.DATE is true.&amp;nbsp; You do not care about the status of the FIRST. variables for earlier variables in the BY statement.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 20 Jul 2011 18:22:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/34444#M8404</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2011-07-20T18:22:16Z</dc:date>
    </item>
    <item>
      <title>Re: Assign sequential ID by multiple groups</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/34445#M8405</link>
      <description>&lt;P&gt;HI Solph,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/159"&gt;@Tom&lt;/a&gt;&amp;nbsp;says, y&lt;SPAN&gt;ou want to reset the counter when FIRST.DATE is true.&amp;nbsp; You do not care about the status of the FIRST. variables for earlier variables in the BY statement.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can try this below code..&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data test;
input pid $ date $;
cards;
1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/1/2011&amp;nbsp;&amp;nbsp;&amp;nbsp;
1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/1/2011&amp;nbsp;&amp;nbsp;&amp;nbsp;
1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3/4/2011&amp;nbsp;&amp;nbsp;&amp;nbsp;
2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5/1/2010&amp;nbsp;&amp;nbsp;
2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6/3/2010&amp;nbsp;
;
run;
&amp;nbsp;
proc sort data=test;
by pid date;
run;
&amp;nbsp;
data want;
&amp;nbsp; set test ;
&amp;nbsp; by pid date;
&amp;nbsp; if first.date then seq_id=0;
&amp;nbsp; seq_id+1;
&amp;nbsp; if last.date then output;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks.&lt;/P&gt;</description>
      <pubDate>Wed, 08 Feb 2017 20:50:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/34445#M8405</guid>
      <dc:creator>raveena</dc:creator>
      <dc:date>2017-02-08T20:50:58Z</dc:date>
    </item>
    <item>
      <title>Assign sequential ID by multiple groups</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/34446#M8406</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It indeed worked now. Thanks much though I still don't fullly understand the logic of frist and last. Any gook book chapters or websites on the use of first, last, retain, accumulating, summing? (For example, why do you only need to specify the second variable in the BY list). Thanks.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;&amp;nbsp; set original; &lt;/P&gt;&lt;P&gt;by p﻿id date; &lt;/P&gt;&lt;P&gt;if first.pid and first.date then seq_id=1; &lt;/P&gt;&lt;P&gt;else seq_id+1; &lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 20 Jul 2011 19:06:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/34446#M8406</guid>
      <dc:creator>Solph</dc:creator>
      <dc:date>2011-07-20T19:06:30Z</dc:date>
    </item>
    <item>
      <title>Re: Assign sequential ID by multiple groups</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/34447#M8407</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks so much. (I liked the actual code in reply). I'm also confused now. For example, I've seen examples end with "if last.var then output" (like you did here) while many don't. When do I need it? Thanks.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 20 Jul 2011 19:09:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/34447#M8407</guid>
      <dc:creator>Solph</dc:creator>
      <dc:date>2011-07-20T19:09:34Z</dc:date>
    </item>
    <item>
      <title>Assign sequential ID by multiple groups</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/34448#M8408</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt; Solph,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Normally,the variable first indicates the first observation for each id;&lt;/P&gt;&lt;P&gt; the variable last indicates the last observation for each id.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 20 Jul 2011 19:19:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/34448#M8408</guid>
      <dc:creator>raveena</dc:creator>
      <dc:date>2011-07-20T19:19:01Z</dc:date>
    </item>
    <item>
      <title>Re: Assign sequential ID by multiple groups</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/34449#M8409</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It helps to look at some example data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data test;&lt;/P&gt;&lt;P&gt;&amp;nbsp; do a=1 to 3; do b=1 to 3; do c=1 to 3; output; end; end; end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data _null_;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set test;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; by a b ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; put (a first.a last.a b first.b last.b c) (=);&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;a=1 FIRST.a=1 LAST.a=0 b=1 FIRST.b=1 LAST.b=0 c=1&lt;/P&gt;&lt;P&gt;a=1 FIRST.a=0 LAST.a=0 b=1 FIRST.b=0 LAST.b=0 c=2&lt;/P&gt;&lt;P&gt;a=1 FIRST.a=0 LAST.a=0 b=1 FIRST.b=0 LAST.b=1 c=3&lt;/P&gt;&lt;P&gt;a=1 FIRST.a=0 LAST.a=0 b=2 FIRST.b=1 LAST.b=0 c=1&lt;/P&gt;&lt;P&gt;a=1 FIRST.a=0 LAST.a=0 b=2 FIRST.b=0 LAST.b=0 c=2&lt;/P&gt;&lt;P&gt;a=1 FIRST.a=0 LAST.a=0 b=2 FIRST.b=0 LAST.b=1 c=3&lt;/P&gt;&lt;P&gt;a=1 FIRST.a=0 LAST.a=0 b=3 FIRST.b=1 LAST.b=0 c=1&lt;/P&gt;&lt;P&gt;a=1 FIRST.a=0 LAST.a=0 b=3 FIRST.b=0 LAST.b=0 c=2&lt;/P&gt;&lt;P&gt;a=1 FIRST.a=0 LAST.a=1 b=3 FIRST.b=0 LAST.b=1 c=3&lt;/P&gt;&lt;P&gt;a=2 FIRST.a=1 LAST.a=0 b=1 FIRST.b=1 LAST.b=0 c=1&lt;/P&gt;&lt;P&gt;a=2 FIRST.a=0 LAST.a=0 b=1 FIRST.b=0 LAST.b=0 c=2&lt;/P&gt;&lt;P&gt;a=2 FIRST.a=0 LAST.a=0 b=1 FIRST.b=0 LAST.b=1 c=3&lt;/P&gt;&lt;P&gt;a=2 FIRST.a=0 LAST.a=0 b=2 FIRST.b=1 LAST.b=0 c=1&lt;/P&gt;&lt;P&gt;a=2 FIRST.a=0 LAST.a=0 b=2 FIRST.b=0 LAST.b=0 c=2&lt;/P&gt;&lt;P&gt;a=2 FIRST.a=0 LAST.a=0 b=2 FIRST.b=0 LAST.b=1 c=3&lt;/P&gt;&lt;P&gt;a=2 FIRST.a=0 LAST.a=0 b=3 FIRST.b=1 LAST.b=0 c=1&lt;/P&gt;&lt;P&gt;a=2 FIRST.a=0 LAST.a=0 b=3 FIRST.b=0 LAST.b=0 c=2&lt;/P&gt;&lt;P&gt;a=2 FIRST.a=0 LAST.a=1 b=3 FIRST.b=0 LAST.b=1 c=3&lt;/P&gt;&lt;P&gt;a=3 FIRST.a=1 LAST.a=0 b=1 FIRST.b=1 LAST.b=0 c=1&lt;/P&gt;&lt;P&gt;a=3 FIRST.a=0 LAST.a=0 b=1 FIRST.b=0 LAST.b=0 c=2&lt;/P&gt;&lt;P&gt;a=3 FIRST.a=0 LAST.a=0 b=1 FIRST.b=0 LAST.b=1 c=3&lt;/P&gt;&lt;P&gt;a=3 FIRST.a=0 LAST.a=0 b=2 FIRST.b=1 LAST.b=0 c=1&lt;/P&gt;&lt;P&gt;a=3 FIRST.a=0 LAST.a=0 b=2 FIRST.b=0 LAST.b=0 c=2&lt;/P&gt;&lt;P&gt;a=3 FIRST.a=0 LAST.a=0 b=2 FIRST.b=0 LAST.b=1 c=3&lt;/P&gt;&lt;P&gt;a=3 FIRST.a=0 LAST.a=0 b=3 FIRST.b=1 LAST.b=0 c=1&lt;/P&gt;&lt;P&gt;a=3 FIRST.a=0 LAST.a=0 b=3 FIRST.b=0 LAST.b=0 c=2&lt;/P&gt;&lt;P&gt;a=3 FIRST.a=0 LAST.a=1 b=3 FIRST.b=0 LAST.b=1 c=3&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 20 Jul 2011 19:28:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/34449#M8409</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2011-07-20T19:28:01Z</dc:date>
    </item>
    <item>
      <title>Assign sequential ID by multiple groups</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/34450#M8410</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt; Solph,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;See this below example.Its easy to understand..&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data students;&lt;/P&gt;&lt;P&gt;&amp;nbsp; input gender score;&lt;/P&gt;&lt;P&gt;&amp;nbsp; cards;&lt;/P&gt;&lt;P&gt;&amp;nbsp; 1 48&lt;/P&gt;&lt;P&gt;&amp;nbsp; 1 48&lt;/P&gt;&lt;P&gt;&amp;nbsp; 1 45&lt;/P&gt;&lt;P&gt;&amp;nbsp; 2 50&lt;/P&gt;&lt;P&gt;&amp;nbsp; 2 42&lt;/P&gt;&lt;P&gt;&amp;nbsp; 1 41&lt;/P&gt;&lt;P&gt;&amp;nbsp; 2 51&lt;/P&gt;&lt;P&gt;&amp;nbsp; 1 52&lt;/P&gt;&lt;P&gt;&amp;nbsp; 1 43&lt;/P&gt;&lt;P&gt;&amp;nbsp; 2 52&lt;/P&gt;&lt;P&gt;&amp;nbsp; 2 52&lt;/P&gt;&lt;P&gt;&amp;nbsp; ;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;proc sort data = students;&lt;/P&gt;&lt;P&gt;&amp;nbsp; by gender score;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;data students1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set students;&lt;/P&gt;&lt;P&gt;&amp;nbsp; count + 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; by gender score;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if first.score then count = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if last.score then output;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 20 Jul 2011 19:37:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/34450#M8410</guid>
      <dc:creator>raveena</dc:creator>
      <dc:date>2011-07-20T19:37:30Z</dc:date>
    </item>
    <item>
      <title>Assign sequential ID by multiple groups</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/34451#M8411</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Try here:&lt;/P&gt;&lt;P&gt;&lt;A class="jive-link-external-small" href="http://www.ats.ucla.edu/stat/sas/"&gt;http://www.ats.ucla.edu/stat/sas/&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;or &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;www.lexjansen.com and search the papers for relevant topics. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The first site has a ton of info on it though.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 20 Jul 2011 20:13:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/34451#M8411</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2011-07-20T20:13:33Z</dc:date>
    </item>
    <item>
      <title>Assign sequential ID by multiple groups</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/34452#M8412</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for the great advice from everyone. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I've a maybe not so related question and I thought I would just ask here instead of creating a new subject entry.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I want to compare data between records by ID, admission date and a group variable. If Group is the same between two consecutive lines (w/n the same admission), then combine the record and output the appropriate dates so that I can calculate the time elapse between dates.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data test; input pid $ admission_date1 $ assessment_date group $;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/1/2011&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/3/2011&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/1/2011&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/9/2011&amp;nbsp;&amp;nbsp; B&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3/4/2011&amp;nbsp;&amp;nbsp;&amp;nbsp; 4/2/2011&amp;nbsp;&amp;nbsp; B&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3/4/2011&amp;nbsp;&amp;nbsp;&amp;nbsp; 4/8/2011&amp;nbsp;&amp;nbsp; B&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;﻿2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6/1/2010&amp;nbsp;&amp;nbsp;&amp;nbsp; 6/4/2011&amp;nbsp;&amp;nbsp; C&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6/5/2010&amp;nbsp;&amp;nbsp;&amp;nbsp; 7/4/2011&amp;nbsp;&amp;nbsp; C&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7/1/2011&amp;nbsp;&amp;nbsp;&amp;nbsp; 7/9/2011&amp;nbsp;&amp;nbsp; D&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Desired output:&lt;/P&gt;&lt;P&gt;PID&amp;nbsp; Adm date&amp;nbsp; Date1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Date2&amp;nbsp; Group&amp;nbsp; &lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/1/2011&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/1/2011&amp;nbsp; 1/3/2011&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *admission date repeating for each record, the first record's date1=admission date&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/1/2011&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/3/2011&amp;nbsp; 1/9/2011&amp;nbsp;&amp;nbsp;&amp;nbsp; B&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *In the subsequent record, date1=date from the previous record &lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3/4/2011&amp;nbsp;&amp;nbsp;&amp;nbsp; 3/4/2011&amp;nbsp; 4/8/2011&amp;nbsp;&amp;nbsp;&amp;nbsp; B&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *Group D is the same between records w/n the same admission, so output as a single record and appr. date&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6/1/2010&amp;nbsp;&amp;nbsp;&amp;nbsp; 6/12010&amp;nbsp;&amp;nbsp; 6/4/2011&amp;nbsp;&amp;nbsp;&amp;nbsp; C&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6/5/2010&amp;nbsp;&amp;nbsp;&amp;nbsp; 6/5/2010&amp;nbsp; 7/4/2011&amp;nbsp;&amp;nbsp;&amp;nbsp; C&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7/1/2011&amp;nbsp;&amp;nbsp;&amp;nbsp; 7/1/2011&amp;nbsp; 7/9/2011&amp;nbsp;&amp;nbsp;&amp;nbsp; D&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope the above makes sense. (The real data is more complicate). And thanks for whatever help you can give.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 20 Jul 2011 23:27:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/34452#M8412</guid>
      <dc:creator>Solph</dc:creator>
      <dc:date>2011-07-20T23:27:05Z</dc:date>
    </item>
    <item>
      <title>Assign sequential ID by multiple groups</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/34453#M8413</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Use LAG to get previous value. When it is the first record for the admit date then overwrite that with the admit date.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data have; &lt;/P&gt;&lt;P&gt; informat admdate testdate mmddyy10.;&lt;/P&gt;&lt;P&gt; format admdate testdate mmddyy10. ;&lt;/P&gt;&lt;P&gt; input pid $ admdate : testdate : group $ @@;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;1 1/1/2011 1/3/2011 A 1 1/1/2011 1/9/2011 B&lt;/P&gt;&lt;P&gt;1 3/4/2011 4/2/2011 B 1 3/4/2011 4/8/2011 B&lt;/P&gt;&lt;P&gt;2 6/1/2010 6/4/2011 C 2 6/5/2010 7/4/2011 C&lt;/P&gt;&lt;P&gt;3 7/1/2011 7/9/2011 D &lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;proc sort; by pid admdate testdate ; run;&lt;/P&gt;&lt;P&gt;data want ; &lt;/P&gt;&lt;P&gt;&amp;nbsp; set have ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; by pid admdate testdate ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; prevdate = lag(testdate) ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; format prevdate mmddyy10.;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if first.admdate then prevdate=admdate;&lt;/P&gt;&lt;P&gt;&amp;nbsp; diff = testdate - prevdate ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; put pid admdate prevdate testdate diff group ;&lt;/P&gt;&lt;P&gt;run; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1 01/01/2011 01/01/2011 01/03/2011 2 A&lt;/P&gt;&lt;P&gt;1 01/01/2011 01/03/2011 01/09/2011 6 B&lt;/P&gt;&lt;P&gt;1 03/04/2011 03/04/2011 04/02/2011 29 B&lt;/P&gt;&lt;P&gt;1 03/04/2011 04/02/2011 04/08/2011 6 B&lt;/P&gt;&lt;P&gt;2 06/01/2010 06/01/2010 06/04/2011 368 C&lt;/P&gt;&lt;P&gt;2 06/05/2010 06/05/2010 07/04/2011 394 C&lt;/P&gt;&lt;P&gt;3 07/01/2011 07/01/2011 07/09/2011 8 D&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 21 Jul 2011 00:31:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/34453#M8413</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2011-07-21T00:31:03Z</dc:date>
    </item>
    <item>
      <title>Assign sequential ID by multiple groups</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/34454#M8414</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks so much. You guys are really clever and I really suck at processing rectangle data. Can I ask another related question?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For a similar data with with each ID with multiple admission dates (admdate) and within each date, there are test dates (testdate)and a group variable (GROUP) and Score variable with each test. I'm hoping to get the following: &lt;/P&gt;&lt;P&gt;W/n each person and same admission, if consecutive records have the same group vairalbes, I'd like to sum up the conse first assessment's RUG value is the same as the next record's value, then I want to sum up the score values and drop the one of the records -- so I don't care about the test date, only about ID, admdate, group and score. I know the lag function will allow me to compare values, but how do I delete the records?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I was only able to come up with the following, but how do I delete the previous record (w/n the same ID and admission date) that has the same group? Would using retain work? How? Sorry, I'm really sucked at reading rectangle data, lag function and retain. So thanks for being patient with me. The data is below if it helps. Thanks very much.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sort data=mydata.testdata out=test; &lt;/P&gt;&lt;P&gt;by id admdate testdate;&amp;nbsp; &lt;/P&gt;&lt;P&gt;run; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want; set test; &lt;/P&gt;&lt;P&gt;by ID admdate testdate; &lt;/P&gt;&lt;P&gt;prev_group= lag(group); &lt;/P&gt;&lt;P&gt;prev_score=lag(score); &lt;/P&gt;&lt;P&gt;if first.testdate and prev_group = group then score2=sum(score,prev_score); &lt;/P&gt;&lt;P&gt;if first.testdate and prev_group ne group then ﻿score2=score; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ID Admdate Testdate Group Score &lt;/P&gt;&lt;P&gt;1 30/04/2001 01-Apr-06 SE2 49 &lt;/P&gt;&lt;P&gt;1 30/04/2001 14-May-06 RLB 17 &lt;/P&gt;&lt;P&gt;2 16/12/2004 01-Apr-06 SSB 80 &lt;/P&gt;&lt;P&gt;2 16/12/2004 30-Jun-06 SSB 82 &lt;/P&gt;&lt;P&gt;2 16/12/2004 30-Sep-06 SE2 104 &lt;/P&gt;&lt;P&gt;2 16/12/2004 30-Dec-06 SSB 80 &lt;/P&gt;&lt;P&gt;2 16/12/2004 30-Mar-07 CB2 2 &lt;/P&gt;&lt;P&gt;3 24/08/2005 01-Apr-06 RLB 59 &lt;/P&gt;&lt;P&gt;4 08/07/1989 01-Apr-06 CC2 88 &lt;/P&gt;&lt;P&gt;4 08/07/1989 01-Jul-06 CC2 71 &lt;/P&gt;&lt;P&gt;5 15/04/2000 01-Apr-06 CB1 8 &lt;/P&gt;&lt;P&gt;5 15/04/2000 12-Apr-06 CB1 19 &lt;/P&gt;&lt;P&gt;6 10/04/2001 01-Apr-06 SSB 69 &lt;/P&gt;&lt;P&gt;6 10/04/2001 17-Jun-06 SSB 27 &lt;/P&gt;&lt;P&gt;7 11/04/2005 01-Apr-06 CB1 17 &lt;/P&gt;&lt;P&gt;7 11/04/2005 24-Apr-06 SSA 78 &lt;/P&gt;&lt;P&gt;7 11/04/2005 24-Jul-06 SSA 14 &lt;/P&gt;&lt;P&gt;8 07/04/2005 01-Apr-06 PB1 8 &lt;/P&gt;&lt;P&gt;8 07/04/2005 20-Apr-06 CA1 45&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 22 Jul 2011 19:48:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/34454#M8414</guid>
      <dc:creator>Solph</dc:creator>
      <dc:date>2011-07-22T19:48:49Z</dc:date>
    </item>
    <item>
      <title>Assign sequential ID by multiple groups</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/34455#M8415</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Why don't you just use proc summary?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 22 Jul 2011 20:00:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/34455#M8415</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2011-07-22T20:00:48Z</dc:date>
    </item>
    <item>
      <title>Assign sequential ID by multiple groups</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/34456#M8416</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;That's very much true and I was overthinking about those complicate ways. But it works well if I don't call if they occur in consecutive order (such as 2nd record vs.1st, and 3rd record vs. 2nd). What if I care (in some cases I do need to)?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 22 Jul 2011 23:16:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/34456#M8416</guid>
      <dc:creator>Solph</dc:creator>
      <dc:date>2011-07-22T23:16:06Z</dc:date>
    </item>
    <item>
      <title>Assign sequential ID by multiple groups</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/34457#M8417</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Then use proc summary with a class statement and the nway option.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 23 Jul 2011 00:31:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/34457#M8417</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2011-07-23T00:31:36Z</dc:date>
    </item>
    <item>
      <title>Re: Assign sequential ID by multiple groups</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/307264#M61086</link>
      <description>&lt;P&gt;To Solop (and others),&amp;nbsp;&lt;/P&gt;&lt;P&gt;Although it's a &amp;nbsp;late solution to this specific problem, yet there is a simple solution indeed. First sort the dataset using the sequence variable as your key variable. (not shown in the code).&lt;/P&gt;&lt;P&gt;Let's say your sequence variable is exseq. Then, before your SET&amp;nbsp;statement use a RETAIN statement and use the seq variable as the statement's option.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data EX;&lt;BR /&gt;retain exseq ; * must retain this variable in order to re-start assigning a new sequence number;&lt;BR /&gt;set ex1;&lt;BR /&gt;by subject;&lt;BR /&gt;if first.subject then exseq = 0;&lt;BR /&gt;exseq+1; * this will assign sequential values to exseq variable;&lt;BR /&gt;keep subject exseq; &amp;nbsp;* optional!;&amp;nbsp;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Hiope this helps.&lt;/P&gt;</description>
      <pubDate>Tue, 25 Oct 2016 23:17:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Assign-sequential-ID-by-multiple-groups/m-p/307264#M61086</guid>
      <dc:creator>tusher</dc:creator>
      <dc:date>2016-10-25T23:17:37Z</dc:date>
    </item>
  </channel>
</rss>

