<?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 number to certain subjects in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Assigning-number-to-certain-subjects/m-p/476953#M122772</link>
    <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
data have;

   input subject ;

datalines;
12345   1
12345   1 
12345    1
23456    1
23456    1
23456    1
23456     1
34567     1
34567   1
34567   1
34567   1
45678   2  
45678   2
45678   2
45678   2
run;
 
data want;
set have;
by subject;
retain change 1;
if first.subject then patient+1;
if mod(patient,3)=0 and last.subject then do; output;change+1;end;
else output;
drop patient;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Tue, 10 Jul 2018 22:02:13 GMT</pubDate>
    <dc:creator>novinosrin</dc:creator>
    <dc:date>2018-07-10T22:02:13Z</dc:date>
    <item>
      <title>Assigning number to certain subjects</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Assigning-number-to-certain-subjects/m-p/476951#M122771</link>
      <description>&lt;P&gt;I want the variable 'change' to be set to 1 for first&amp;nbsp;3&amp;nbsp; patients, 2 for second&amp;nbsp;3 patients and so on.&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 have;

   input subject change;

datalines;

12345   1

12345   1 

12345    1


23456    1

23456    1

23456    1

23456     1

34567     1


34567   1
34567   1
34567   1
45678   2  
45678   2
45678   2
45678   2


run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 10 Jul 2018 21:49:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Assigning-number-to-certain-subjects/m-p/476951#M122771</guid>
      <dc:creator>gpv2000</dc:creator>
      <dc:date>2018-07-10T21:49:37Z</dc:date>
    </item>
    <item>
      <title>Re: Assigning number to certain subjects</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Assigning-number-to-certain-subjects/m-p/476953#M122772</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
data have;

   input subject ;

datalines;
12345   1
12345   1 
12345    1
23456    1
23456    1
23456    1
23456     1
34567     1
34567   1
34567   1
34567   1
45678   2  
45678   2
45678   2
45678   2
run;
 
data want;
set have;
by subject;
retain change 1;
if first.subject then patient+1;
if mod(patient,3)=0 and last.subject then do; output;change+1;end;
else output;
drop patient;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 10 Jul 2018 22:02:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Assigning-number-to-certain-subjects/m-p/476953#M122772</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2018-07-10T22:02:13Z</dc:date>
    </item>
    <item>
      <title>Re: Assigning number to certain subjects</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Assigning-number-to-certain-subjects/m-p/476957#M122775</link>
      <description>&lt;P&gt;data xxx;&lt;BR /&gt;&amp;nbsp; retain count id 0 ;&lt;BR /&gt;&amp;nbsp; set yyy;&lt;BR /&gt;&amp;nbsp; count=count+1;&lt;BR /&gt;&amp;nbsp; if mod(count,3)=1 then id=id+1;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;?&lt;/P&gt;</description>
      <pubDate>Tue, 10 Jul 2018 22:25:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Assigning-number-to-certain-subjects/m-p/476957#M122775</guid>
      <dc:creator>pau13rown</dc:creator>
      <dc:date>2018-07-10T22:25:10Z</dc:date>
    </item>
    <item>
      <title>Re: Assigning number to certain subjects</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Assigning-number-to-certain-subjects/m-p/476958#M122776</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/183379"&gt;@pau13rown&lt;/a&gt;&amp;nbsp;Neat!!!!!&lt;/P&gt;</description>
      <pubDate>Tue, 10 Jul 2018 22:33:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Assigning-number-to-certain-subjects/m-p/476958#M122776</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2018-07-10T22:33:30Z</dc:date>
    </item>
    <item>
      <title>Re: Assigning number to certain subjects</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Assigning-number-to-certain-subjects/m-p/476979#M122777</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/183379"&gt;@pau13rown&lt;/a&gt;&amp;nbsp;&amp;nbsp; You're increenting count with every observation, but I think you intend to increment only with every new subject:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;data want;
  set have;
  by subject;
  if first.subject then do;
    count+1;
    id+(mod(count,3)=1);
  end;
run;&lt;/PRE&gt;
&lt;P&gt;And one can even get away without creating the count variable, via a conditional use of lag.&amp;nbsp; I don't particularly recommend it, but it's a good demonstration that lag functions don't do "look-backs", but rather they manage queues:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
  set have;
  by subject;
  retain id 1;
  if first.subject then id+(lag3(id)=id);
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 11 Jul 2018 05:06:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Assigning-number-to-certain-subjects/m-p/476979#M122777</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2018-07-11T05:06:05Z</dc:date>
    </item>
    <item>
      <title>Re: Assigning number to certain subjects</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Assigning-number-to-certain-subjects/m-p/477023#M122796</link>
      <description>&lt;P&gt;Instead of creating a variable to count the number of subjects read, you can loop for each subject, so that you can use the _N_ variable:&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
  change+mod(_N_,3)=1;
  do until(last.subject);
    set have;
    by subject;
    output;
    end;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 11 Jul 2018 10:21:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Assigning-number-to-certain-subjects/m-p/477023#M122796</guid>
      <dc:creator>s_lassen</dc:creator>
      <dc:date>2018-07-11T10:21:33Z</dc:date>
    </item>
    <item>
      <title>Re: Assigning number to certain subjects</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Assigning-number-to-certain-subjects/m-p/477140#M122835</link>
      <description>&lt;P&gt;Thank you this solution works too.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 11 Jul 2018 16:08:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Assigning-number-to-certain-subjects/m-p/477140#M122835</guid>
      <dc:creator>gpv2000</dc:creator>
      <dc:date>2018-07-11T16:08:18Z</dc:date>
    </item>
  </channel>
</rss>

