<?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 value for a group under condition in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/assign-value-for-a-group-under-condition/m-p/841570#M82176</link>
    <description>&lt;P&gt;Hi All,&lt;/P&gt;&lt;P&gt;I am new to sas and I was trying to achieve such thing:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;here is the dataset:&lt;/P&gt;&lt;DIV&gt;PERMNO EVTDATE first_event inter_event&lt;/DIV&gt;&lt;DIV&gt;10001 8/1/11 1 0&lt;/DIV&gt;&lt;DIV&gt;10001 4/2/12 0 1&lt;/DIV&gt;&lt;DIV&gt;10002 7/6/98 1 0&lt;/DIV&gt;&lt;DIV&gt;10002 10/27/98 0 1&lt;/DIV&gt;&lt;DIV&gt;10011 11/13/95 1 0&lt;/DIV&gt;&lt;DIV&gt;10011 5/28/96 0 1&lt;/DIV&gt;&lt;DIV&gt;10011 5/29/96 0 1&lt;/DIV&gt;&lt;DIV&gt;10016 12/9/99 1 0&lt;/DIV&gt;&lt;DIV&gt;10016 5/3/00 0 1&lt;/DIV&gt;&lt;DIV&gt;10020 4/6/87 1 0&lt;/DIV&gt;&lt;DIV&gt;10020 10/21/87 0 1&lt;/DIV&gt;&lt;DIV&gt;10020 12/11/87 0 1&lt;/DIV&gt;&lt;DIV&gt;10020 4/17/90 1 0&lt;/DIV&gt;&lt;DIV&gt;10020 4/24/90 0 1&lt;/DIV&gt;&lt;DIV&gt;10028 8/17/99 1 0&lt;/DIV&gt;&lt;DIV&gt;10028 3/3/00 0 1&lt;/DIV&gt;&lt;DIV&gt;10028 7/14/06 1 0&lt;/DIV&gt;&lt;DIV&gt;10028 5/10/07 0 1&lt;/DIV&gt;&lt;DIV&gt;I would like to create another column call program and the column will state as:&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;PERMNO EVTDATE first_event inter_event define a program, and numbers of event in the group&lt;/DIV&gt;&lt;DIV&gt;10001 8/1/11 1 0 2&lt;/DIV&gt;&lt;DIV&gt;10001 4/2/12 0 1 2&lt;/DIV&gt;&lt;DIV&gt;10002 7/6/98 1 0 2&lt;/DIV&gt;&lt;DIV&gt;10002 10/27/98 0 1 2&lt;/DIV&gt;&lt;DIV&gt;10011 11/13/95 1 0 3&lt;/DIV&gt;&lt;DIV&gt;10011 5/28/96 0 1 3&lt;/DIV&gt;&lt;DIV&gt;10011 5/29/96 0 1 3&lt;/DIV&gt;&lt;DIV&gt;10016 12/9/99 1 0 2&lt;/DIV&gt;&lt;DIV&gt;10016 5/3/00 0 1 2&lt;/DIV&gt;&lt;DIV&gt;10020 4/6/87 1 0 3&lt;/DIV&gt;&lt;DIV&gt;10020 10/21/87 0 1 3&lt;/DIV&gt;&lt;DIV&gt;10020 12/11/87 0 1 3&lt;/DIV&gt;&lt;DIV&gt;10020 4/17/90 1 0 2&lt;/DIV&gt;&lt;DIV&gt;10020 4/24/90 0 1 2&lt;/DIV&gt;&lt;DIV&gt;10028 8/17/99 1 0 2&lt;/DIV&gt;&lt;DIV&gt;10028 3/3/00 0 1 2&lt;/DIV&gt;&lt;DIV&gt;10028 7/14/06 1 0 2&lt;/DIV&gt;&lt;DIV&gt;10028 5/10/07 0 1 2&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;let say for permno 10001, there are two obs and they form a program and the program has two event in a row, so it will be definded as 2 for each of the two obs.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Thank you so much for your help!&lt;/DIV&gt;&lt;DIV&gt;Appreciated,&lt;/DIV&gt;&lt;DIV&gt;Zhongda&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 31 Oct 2022 03:54:16 GMT</pubDate>
    <dc:creator>Zhongda</dc:creator>
    <dc:date>2022-10-31T03:54:16Z</dc:date>
    <item>
      <title>assign value for a group under condition</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/assign-value-for-a-group-under-condition/m-p/841570#M82176</link>
      <description>&lt;P&gt;Hi All,&lt;/P&gt;&lt;P&gt;I am new to sas and I was trying to achieve such thing:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;here is the dataset:&lt;/P&gt;&lt;DIV&gt;PERMNO EVTDATE first_event inter_event&lt;/DIV&gt;&lt;DIV&gt;10001 8/1/11 1 0&lt;/DIV&gt;&lt;DIV&gt;10001 4/2/12 0 1&lt;/DIV&gt;&lt;DIV&gt;10002 7/6/98 1 0&lt;/DIV&gt;&lt;DIV&gt;10002 10/27/98 0 1&lt;/DIV&gt;&lt;DIV&gt;10011 11/13/95 1 0&lt;/DIV&gt;&lt;DIV&gt;10011 5/28/96 0 1&lt;/DIV&gt;&lt;DIV&gt;10011 5/29/96 0 1&lt;/DIV&gt;&lt;DIV&gt;10016 12/9/99 1 0&lt;/DIV&gt;&lt;DIV&gt;10016 5/3/00 0 1&lt;/DIV&gt;&lt;DIV&gt;10020 4/6/87 1 0&lt;/DIV&gt;&lt;DIV&gt;10020 10/21/87 0 1&lt;/DIV&gt;&lt;DIV&gt;10020 12/11/87 0 1&lt;/DIV&gt;&lt;DIV&gt;10020 4/17/90 1 0&lt;/DIV&gt;&lt;DIV&gt;10020 4/24/90 0 1&lt;/DIV&gt;&lt;DIV&gt;10028 8/17/99 1 0&lt;/DIV&gt;&lt;DIV&gt;10028 3/3/00 0 1&lt;/DIV&gt;&lt;DIV&gt;10028 7/14/06 1 0&lt;/DIV&gt;&lt;DIV&gt;10028 5/10/07 0 1&lt;/DIV&gt;&lt;DIV&gt;I would like to create another column call program and the column will state as:&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;PERMNO EVTDATE first_event inter_event define a program, and numbers of event in the group&lt;/DIV&gt;&lt;DIV&gt;10001 8/1/11 1 0 2&lt;/DIV&gt;&lt;DIV&gt;10001 4/2/12 0 1 2&lt;/DIV&gt;&lt;DIV&gt;10002 7/6/98 1 0 2&lt;/DIV&gt;&lt;DIV&gt;10002 10/27/98 0 1 2&lt;/DIV&gt;&lt;DIV&gt;10011 11/13/95 1 0 3&lt;/DIV&gt;&lt;DIV&gt;10011 5/28/96 0 1 3&lt;/DIV&gt;&lt;DIV&gt;10011 5/29/96 0 1 3&lt;/DIV&gt;&lt;DIV&gt;10016 12/9/99 1 0 2&lt;/DIV&gt;&lt;DIV&gt;10016 5/3/00 0 1 2&lt;/DIV&gt;&lt;DIV&gt;10020 4/6/87 1 0 3&lt;/DIV&gt;&lt;DIV&gt;10020 10/21/87 0 1 3&lt;/DIV&gt;&lt;DIV&gt;10020 12/11/87 0 1 3&lt;/DIV&gt;&lt;DIV&gt;10020 4/17/90 1 0 2&lt;/DIV&gt;&lt;DIV&gt;10020 4/24/90 0 1 2&lt;/DIV&gt;&lt;DIV&gt;10028 8/17/99 1 0 2&lt;/DIV&gt;&lt;DIV&gt;10028 3/3/00 0 1 2&lt;/DIV&gt;&lt;DIV&gt;10028 7/14/06 1 0 2&lt;/DIV&gt;&lt;DIV&gt;10028 5/10/07 0 1 2&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;let say for permno 10001, there are two obs and they form a program and the program has two event in a row, so it will be definded as 2 for each of the two obs.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Thank you so much for your help!&lt;/DIV&gt;&lt;DIV&gt;Appreciated,&lt;/DIV&gt;&lt;DIV&gt;Zhongda&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 31 Oct 2022 03:54:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/assign-value-for-a-group-under-condition/m-p/841570#M82176</guid>
      <dc:creator>Zhongda</dc:creator>
      <dc:date>2022-10-31T03:54:16Z</dc:date>
    </item>
    <item>
      <title>Re: assign value for a group under condition</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/assign-value-for-a-group-under-condition/m-p/841580#M82177</link>
      <description>&lt;P&gt;Here is how I interpret your problem. You want to count the number of events (first_event or inter_event) that occurs within a 'group'. A group starts with a first_event and ends with the last inter_event = 1 or when Permno has a new value in the next obs.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This gives you your desired result. You would have to tweak it a bit if first_event and inter_event can both be =0 in the same obs.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input PERMNO EVTDATE :mmddyy8. first_event inter_event;
format EVTDATE mmddyy8.;
datalines;
10001 8/1/11   1 0
10001 4/2/12   0 1
10002 7/6/98   1 0
10002 10/27/98 0 1
10011 11/13/95 1 0
10011 5/28/96  0 1
10011 5/29/96  0 1
10016 12/9/99  1 0
10016 5/3/00   0 1
10020 4/6/87   1 0
10020 10/21/87 0 1
10020 12/11/87 0 1
10020 4/17/90  1 0
10020 4/24/90  0 1
10028 8/17/99  1 0
10028 3/3/00   0 1
10028 7/14/06  1 0
10028 5/10/07  0 1
;

data want;
   if 0 then set have;
   do _N_ = 1 by 1 until (last.inter_event &amp;amp; inter_event);
      set have;
      by permno inter_event notsorted;
      c + 1;
   end;

   do _N_ = 1 to _N_;
      set have;
      output;
   end;

   c = 0;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;U&gt;&lt;STRONG&gt;Result:&lt;/STRONG&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;PERMNO  EVTDATE   first_event  inter_event  c
10001   08/01/11  1            0            2
10001   04/02/12  0            1            2
10002   07/06/98  1            0            2
10002   10/27/98  0            1            2
10011   11/13/95  1            0            3
10011   05/28/96  0            1            3
10011   05/29/96  0            1            3
10016   12/09/99  1            0            2
10016   05/03/00  0            1            2
10020   04/06/87  1            0            3
10020   10/21/87  0            1            3
10020   12/11/87  0            1            3
10020   04/17/90  1            0            2
10020   04/24/90  0            1            2
10028   08/17/99  1            0            2
10028   03/03/00  0            1            2
10028   07/14/06  1            0            2
10028   05/10/07  0            1            2&lt;/PRE&gt;</description>
      <pubDate>Mon, 31 Oct 2022 07:47:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/assign-value-for-a-group-under-condition/m-p/841580#M82177</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2022-10-31T07:47:12Z</dc:date>
    </item>
    <item>
      <title>Re: assign value for a group under condition</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/assign-value-for-a-group-under-condition/m-p/841798#M82186</link>
      <description>&lt;P&gt;Hi Peter,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you so much for your kind help. This code does work very well, but could you please explain the syntax so that I can have a better understanding for each line.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Really appreciate your help.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Zhongda&lt;/P&gt;</description>
      <pubDate>Tue, 01 Nov 2022 02:38:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/assign-value-for-a-group-under-condition/m-p/841798#M82186</guid>
      <dc:creator>Zhongda</dc:creator>
      <dc:date>2022-11-01T02:38:59Z</dc:date>
    </item>
  </channel>
</rss>

