<?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: Creating a new dummy variable in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Creating-a-new-dummy-variable/m-p/711637#M219250</link>
    <description>&lt;P&gt;Try this. I added another PERMNO for demonstration. Should be reasonably fast even for large data and many PERMNO.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Feel free to ask.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input PERMNO Fyear div;
datalines;
10100 1980 0
10100 1981 0 
10100 1982 1
10100 1983 1
10100 1984 0
10100 1985 1
10100 1986 1
10100 1987 1
10100 1988 0
10100 1989 0
10100 1990 0
10100 1991 1
10100 1992 1
10100 1993 1
10100 1994 1
10100 1995 0
10101 1980 0
10101 1981 0 
10101 1982 1
10101 1983 1
10101 1984 0
10101 1985 1
10101 1986 1
10101 1987 1
10101 1988 0
10101 1989 0
10101 1990 0
10101 1991 1
10101 1992 1
10101 1993 1
10101 1994 1
10101 1995 0
;

data have(drop = c d y rc);

   array v {-2 : 2} _temporary_ (0 0 1 1 1);

   dcl hash h();
   h.definekey("PERMNO", "Fyear");
   h.definedata("div");
   h.definedone();

   do until (last.PERMNO);
      set have;
      by PERMNO;
      h.add();
   end;

   do until (last.PERMNO);
      set have;
      by PERMNO;
  
      c = 0;
      d = div;

      do y = -2 to 2;
         if h.find(key : PERMNO, key : Fyear + y) = 0 and div = v[y] then c + 1;
      end;

      dummy = (c=5);
      div = d;

      output;
   end;

   rc = h.clear();

run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Result:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-SPOILER&gt;
&lt;PRE&gt;Obs  PERMNO  Fyear  div  dummy 
1    10100   1980   0    0 
2    10100   1981   0    0 
3    10100   1982   1    0 
4    10100   1983   1    0 
5    10100   1984   0    0 
6    10100   1985   1    0 
7    10100   1986   1    0 
8    10100   1987   1    0 
9    10100   1988   0    0 
10   10100   1989   0    0 
11   10100   1990   0    0 
12   10100   1991   1    1 
13   10100   1992   1    0 
14   10100   1993   1    0 
15   10100   1994   1    0 
16   10100   1995   0    0 
17   10101   1980   0    0 
18   10101   1981   0    0 
19   10101   1982   1    0 
20   10101   1983   1    0 
21   10101   1984   0    0 
22   10101   1985   1    0 
23   10101   1986   1    0 
24   10101   1987   1    0 
25   10101   1988   0    0 
26   10101   1989   0    0 
27   10101   1990   0    0 
28   10101   1991   1    1 
29   10101   1992   1    0 
30   10101   1993   1    0 
31   10101   1994   1    0 
32   10101   1995   0    0 
&lt;/PRE&gt;
&lt;/LI-SPOILER&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Fri, 15 Jan 2021 11:06:27 GMT</pubDate>
    <dc:creator>PeterClemmensen</dc:creator>
    <dc:date>2021-01-15T11:06:27Z</dc:date>
    <item>
      <title>Creating a new dummy variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Creating-a-new-dummy-variable/m-p/711634#M219248</link>
      <description>&lt;P&gt;Creating a new dummy variable (dum) as 1 for current year if at least past two consecutive year (t-2, t-1) has div = 0, and current year (t) div = 1, and at least next two consecutive year (t+1, t+2) has div = 1.&lt;/P&gt;&lt;P&gt;To be noted, this is a panel data structure. I have over 10,000 different PERMNO. Really appreciate if someone can help, thanks a lot&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Data Have;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;PERMNO&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Fyear&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;div&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10100&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1980&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10100&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1981&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10100&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1982&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10100&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1983&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10100&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1984&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10100&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1985&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10100&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1986&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10100&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1987&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10100&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1988&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10100&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1989&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10100&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1990&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10100&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1991&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10100&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1992&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10100&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1993&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10100&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1994&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10100&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1995&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Data want;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;PERMNO&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Fyear&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;div&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;dum&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10100&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1980&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10100&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1981&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10100&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1982&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10100&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1983&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10100&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1984&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10100&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1985&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10100&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1986&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10100&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1987&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10100&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1988&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10100&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1989&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10100&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1990&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10100&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1991&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10100&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1992&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10100&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1993&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10100&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1994&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10100&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1995&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 15 Jan 2021 10:41:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Creating-a-new-dummy-variable/m-p/711634#M219248</guid>
      <dc:creator>Sandi1</dc:creator>
      <dc:date>2021-01-15T10:41:23Z</dc:date>
    </item>
    <item>
      <title>Re: Creating a new dummy variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Creating-a-new-dummy-variable/m-p/711637#M219250</link>
      <description>&lt;P&gt;Try this. I added another PERMNO for demonstration. Should be reasonably fast even for large data and many PERMNO.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Feel free to ask.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input PERMNO Fyear div;
datalines;
10100 1980 0
10100 1981 0 
10100 1982 1
10100 1983 1
10100 1984 0
10100 1985 1
10100 1986 1
10100 1987 1
10100 1988 0
10100 1989 0
10100 1990 0
10100 1991 1
10100 1992 1
10100 1993 1
10100 1994 1
10100 1995 0
10101 1980 0
10101 1981 0 
10101 1982 1
10101 1983 1
10101 1984 0
10101 1985 1
10101 1986 1
10101 1987 1
10101 1988 0
10101 1989 0
10101 1990 0
10101 1991 1
10101 1992 1
10101 1993 1
10101 1994 1
10101 1995 0
;

data have(drop = c d y rc);

   array v {-2 : 2} _temporary_ (0 0 1 1 1);

   dcl hash h();
   h.definekey("PERMNO", "Fyear");
   h.definedata("div");
   h.definedone();

   do until (last.PERMNO);
      set have;
      by PERMNO;
      h.add();
   end;

   do until (last.PERMNO);
      set have;
      by PERMNO;
  
      c = 0;
      d = div;

      do y = -2 to 2;
         if h.find(key : PERMNO, key : Fyear + y) = 0 and div = v[y] then c + 1;
      end;

      dummy = (c=5);
      div = d;

      output;
   end;

   rc = h.clear();

run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Result:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-SPOILER&gt;
&lt;PRE&gt;Obs  PERMNO  Fyear  div  dummy 
1    10100   1980   0    0 
2    10100   1981   0    0 
3    10100   1982   1    0 
4    10100   1983   1    0 
5    10100   1984   0    0 
6    10100   1985   1    0 
7    10100   1986   1    0 
8    10100   1987   1    0 
9    10100   1988   0    0 
10   10100   1989   0    0 
11   10100   1990   0    0 
12   10100   1991   1    1 
13   10100   1992   1    0 
14   10100   1993   1    0 
15   10100   1994   1    0 
16   10100   1995   0    0 
17   10101   1980   0    0 
18   10101   1981   0    0 
19   10101   1982   1    0 
20   10101   1983   1    0 
21   10101   1984   0    0 
22   10101   1985   1    0 
23   10101   1986   1    0 
24   10101   1987   1    0 
25   10101   1988   0    0 
26   10101   1989   0    0 
27   10101   1990   0    0 
28   10101   1991   1    1 
29   10101   1992   1    0 
30   10101   1993   1    0 
31   10101   1994   1    0 
32   10101   1995   0    0 
&lt;/PRE&gt;
&lt;/LI-SPOILER&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 15 Jan 2021 11:06:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Creating-a-new-dummy-variable/m-p/711637#M219250</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2021-01-15T11:06:27Z</dc:date>
    </item>
    <item>
      <title>Re: Creating a new dummy variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Creating-a-new-dummy-variable/m-p/711645#M219252</link>
      <description>&lt;P&gt;Dear Peter,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;thanks for your prompt response, it seems working using your data. I am not exactly sure what the code is doing. What if I change the rules now, say&amp;nbsp;&lt;/P&gt;&lt;P&gt;instead of at least past &lt;STRONG&gt;two&lt;/STRONG&gt; consecutive year, I am now requiring&amp;nbsp;past &lt;STRONG&gt;three&lt;/STRONG&gt; consecutive year (&lt;STRONG&gt;t-3&lt;/STRONG&gt;, t-2, t-1) has div = 0, and current year (t) div = 1, and at least next two consecutive year (t+1, t+2) has div = 1.&lt;/P&gt;&lt;P&gt;I will have to explore other rules, but helping with this change will help me to understand what your code is doing, thank you.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 15 Jan 2021 11:18:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Creating-a-new-dummy-variable/m-p/711645#M219252</guid>
      <dc:creator>Sandi1</dc:creator>
      <dc:date>2021-01-15T11:18:00Z</dc:date>
    </item>
    <item>
      <title>Re: Creating a new dummy variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Creating-a-new-dummy-variable/m-p/711647#M219253</link>
      <description>&lt;P&gt;No Problem. I made the changes and commented where the changes are done.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Let me know if it works &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have(drop = c d y rc);

   array v {-3 : 2} _temporary_ (0 0 0 1 1 1);   /* Here */

   dcl hash h();
   h.definekey("PERMNO", "Fyear");
   h.definedata("div");
   h.definedone();

   do until (last.PERMNO);
      set have;
      by PERMNO;
      h.add();
   end;

   do until (last.PERMNO);
      set have;
      by PERMNO;
  
      c = 0;
      d = div;

      do y = -3 to 2;                            /* Here */
         if h.find(key : PERMNO, key : Fyear + y) = 0 and div = v[y] then c + 1;
      end;

      dummy = (c = 6);                           /* Here */
      div = d;

      output;
   end;

   rc = h.clear();

run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 15 Jan 2021 11:21:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Creating-a-new-dummy-variable/m-p/711647#M219253</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2021-01-15T11:21:56Z</dc:date>
    </item>
    <item>
      <title>Re: Creating a new dummy variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Creating-a-new-dummy-variable/m-p/711648#M219254</link>
      <description>&lt;P&gt;Dear Peter,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am very sure it will work. I will try with my actual dataset tomorrow, and will let you know. thanks for your great work&lt;/P&gt;</description>
      <pubDate>Fri, 15 Jan 2021 11:25:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Creating-a-new-dummy-variable/m-p/711648#M219254</guid>
      <dc:creator>Sandi1</dc:creator>
      <dc:date>2021-01-15T11:25:30Z</dc:date>
    </item>
    <item>
      <title>Re: Creating a new dummy variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Creating-a-new-dummy-variable/m-p/711649#M219255</link>
      <description>&lt;P&gt;Anytime. Please remember to close the thread if it does &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Also, welcome to the community!&lt;/P&gt;</description>
      <pubDate>Fri, 15 Jan 2021 11:26:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Creating-a-new-dummy-variable/m-p/711649#M219255</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2021-01-15T11:26:12Z</dc:date>
    </item>
    <item>
      <title>Re: Creating a new dummy variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Creating-a-new-dummy-variable/m-p/711650#M219256</link>
      <description>&lt;P&gt;Assuming there is not gap between years.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;data have;
input PERMNO Fyear div;
datalines;
10100 1980 0
10100 1981 0 
10100 1982 1
10100 1983 1
10100 1984 0
10100 1985 1
10100 1986 1
10100 1987 1
10100 1988 0
10100 1989 0
10100 1990 0
10100 1991 1
10100 1992 1
10100 1993 1
10100 1994 1
10100 1995 0
10101 1980 0
10101 1981 0 
10101 1982 1
10101 1983 1
10101 1984 0
10101 1985 1
10101 1986 1
10101 1987 1
10101 1988 0
10101 1989 0
10101 1990 0
10101 1991 1
10101 1992 1
10101 1993 1
10101 1994 1
10101 1995 0
;
data want;
 merge have have(keep=PERMNO div rename=(PERMNO=_PERMNO div=_div) firstobs=2)
            have(keep=PERMNO div rename=(PERMNO=__PERMNO div=__div) firstobs=3);
 if lag2(PERMNO)=PERMNO and lag(PERMNO)=PERMNO and lag2(div)=0 and lag(div)=0 and
    PERMNO=__PERMNO and PERMNO=_PERMNO and __div=1 and _div=1 and div=1 then dummy=1;
 else dummy=0;
drop _: ;
run;&lt;/PRE&gt;</description>
      <pubDate>Fri, 15 Jan 2021 11:26:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Creating-a-new-dummy-variable/m-p/711650#M219256</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2021-01-15T11:26:36Z</dc:date>
    </item>
    <item>
      <title>Re: Creating a new dummy variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Creating-a-new-dummy-variable/m-p/711661#M219264</link>
      <description>&lt;P&gt;EDIT:&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/364091"&gt;@Sandi1&lt;/a&gt;,&amp;nbsp;just edited the code a bit. Does the same thing, but you only need to change one line for the different logic.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have(drop = c d y rc);

   array v {-3 : 2} _temporary_ (0 0 0 1 1 1);   /* Here */

   dcl hash h();
   h.definekey("PERMNO", "Fyear");
   h.definedata("d");
   h.definedone();

   do until (last.PERMNO);
      set have;
      by PERMNO;
      d = div;
      h.add();
   end;

   do until (last.PERMNO);
      set have;
      by PERMNO;
 
      c = 0;
      do y = lbound(v) to hbound(v);
         if h.find(key : PERMNO, key : Fyear + y) = 0 and d = v[y] then c + 1;
      end;
      dummy = (c = dim(v));

      output;
   end;

   rc = h.clear();

run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 15 Jan 2021 12:42:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Creating-a-new-dummy-variable/m-p/711661#M219264</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2021-01-15T12:42:02Z</dc:date>
    </item>
    <item>
      <title>Re: Creating a new dummy variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Creating-a-new-dummy-variable/m-p/711665#M219267</link>
      <description>&lt;P&gt;Here is an alternative solution&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want(keep = PERMNO Fyear div dummy);
   
   array v {-3 : 2} _temporary_ (0 0 0 1 1 1);

   set have curobs = c;
   cum = 0;

   do i = lbound(v) to hbound(v);
      p = (c + i);
      if p &amp;gt; n | p le 0 then leave;
      set have(keep = permno div rename = (permno = pn div = d)) point = p nobs = n;
      if permno ne pn then leave;
      if d = v[i] then cum + 1;
      else leave;
   end;

   dummy = (cum = 6);

run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 15 Jan 2021 13:23:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Creating-a-new-dummy-variable/m-p/711665#M219267</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2021-01-15T13:23:12Z</dc:date>
    </item>
    <item>
      <title>Re: Creating a new dummy variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Creating-a-new-dummy-variable/m-p/711666#M219268</link>
      <description>&lt;P&gt;I don't know which way is better. good luck.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data dum (Keep=PERMNO Fyear dum sortedby=PERMNO Fyear);
  if 0 then set have;
  length journey $5; /*FIFO array*/
    journey="";
    retain journey;

  do until (last.PERMNO); /*DO-Whitlock*/
    set have(rename=(Fyear=Fyear_));
      by PERMNO;
    lag_Fyear_=lag(Fyear_);
    if not first.PERMNO and lag_Fyear_^=Fyear_-1 then do; 
      putlog "ERROR: years not consecutive" _ALL_;
       /*Check, Just in case*/
      _ERROR_=1;
    end;

    if length(Journey)=5
      /*"pop" first "div" from journey (FIFO rules) if full, IOW slide journey once to the left*/
      then journey=substr(journey,2,4); 

    /*push this "div" onto the end*/
    journey=strip(strip(journey)||put(div,1.0));

    dum = journey in ("00111" );
    Fyear=Fyear_-2;
    if length(Journey)=5 
      then output;
  end;
data want;
  update have dum;
    by PERMNO Fyear;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 15 Jan 2021 13:45:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Creating-a-new-dummy-variable/m-p/711666#M219268</guid>
      <dc:creator>PhilC</dc:creator>
      <dc:date>2021-01-15T13:45:21Z</dc:date>
    </item>
    <item>
      <title>Re: Creating a new dummy variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Creating-a-new-dummy-variable/m-p/711712#M219283</link>
      <description>&lt;P&gt;Thank you, it works perfectly!&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 15 Jan 2021 16:34:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Creating-a-new-dummy-variable/m-p/711712#M219283</guid>
      <dc:creator>Sandi1</dc:creator>
      <dc:date>2021-01-15T16:34:21Z</dc:date>
    </item>
    <item>
      <title>Re: Creating a new dummy variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Creating-a-new-dummy-variable/m-p/711713#M219284</link>
      <description>Thanks for your thoughts. Appreciate</description>
      <pubDate>Fri, 15 Jan 2021 16:36:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Creating-a-new-dummy-variable/m-p/711713#M219284</guid>
      <dc:creator>Sandi1</dc:creator>
      <dc:date>2021-01-15T16:36:28Z</dc:date>
    </item>
    <item>
      <title>Re: Creating a new dummy variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Creating-a-new-dummy-variable/m-p/711714#M219285</link>
      <description>&lt;P&gt;Thanks for your thoughts. Appreciate&lt;/P&gt;</description>
      <pubDate>Fri, 15 Jan 2021 16:36:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Creating-a-new-dummy-variable/m-p/711714#M219285</guid>
      <dc:creator>Sandi1</dc:creator>
      <dc:date>2021-01-15T16:36:46Z</dc:date>
    </item>
  </channel>
</rss>

