<?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: Data Step Consecutive Sum in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Data-Step-Consecutive-Sum/m-p/811667#M320160</link>
    <description>&lt;PRE&gt;data have;
infile cards expandtabs truncover;
input obs $ target;
cards;
a	1
a	0
a	1
a	1
a	1
a	1
b	0
b	1
b	1
b	1
b	1
;

data want;
 set have;
 target1=lag(target);target2=lag2(target);
 if obs=lag(obs) and obs=lag2(obs) then do;
  sumlast3=sum(target,target1,target2);
  hit=ifn(sumlast3=3,1,0);
 end;
 drop target1 target2;
run;&lt;/PRE&gt;</description>
    <pubDate>Thu, 05 May 2022 13:52:24 GMT</pubDate>
    <dc:creator>Ksharp</dc:creator>
    <dc:date>2022-05-05T13:52:24Z</dc:date>
    <item>
      <title>Data Step Consecutive Sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-Step-Consecutive-Sum/m-p/811506#M320092</link>
      <description>&lt;P&gt;Hi, In the data set below, I need to sum the last 3 records of (target) to create the var (sumlast3). The var hit is simply if sumlast3 equals 1. I used the lag to create sumlast3 but it is not working. sumlast3=lag(target)+lag2(target)+lag3(target);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;obs&lt;/TD&gt;&lt;TD&gt;target&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;a&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;a&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;a&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;a&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;a&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;a&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;b&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;b&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;b&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;b&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;b&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Want:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;obs&lt;/TD&gt;&lt;TD&gt;target&lt;/TD&gt;&lt;TD&gt;sumlast3&lt;/TD&gt;&lt;TD&gt;hit&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;a&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;a&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;a&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;a&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;a&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;a&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;b&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;b&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;b&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;b&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;b&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 04 May 2022 16:44:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-Step-Consecutive-Sum/m-p/811506#M320092</guid>
      <dc:creator>atnk</dc:creator>
      <dc:date>2022-05-04T16:44:38Z</dc:date>
    </item>
    <item>
      <title>Re: Data Step Consecutive Sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-Step-Consecutive-Sum/m-p/811579#M320127</link>
      <description>The solution could use a method from this post:&lt;BR /&gt;&lt;A href="https://communities.sas.com/t5/SAS-Programming/How-to-find-flag-the-second-to-last-observation-by-ID/td-p/749175" target="_blank"&gt;https://communities.sas.com/t5/SAS-Programming/How-to-find-flag-the-second-to-last-observation-by-ID/td-p/749175&lt;/A&gt;</description>
      <pubDate>Wed, 04 May 2022 22:05:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-Step-Consecutive-Sum/m-p/811579#M320127</guid>
      <dc:creator>pink_poodle</dc:creator>
      <dc:date>2022-05-04T22:05:48Z</dc:date>
    </item>
    <item>
      <title>Re: Data Step Consecutive Sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-Step-Consecutive-Sum/m-p/811581#M320128</link>
      <description>&lt;P&gt;Your WANT dataset seems the show that you want&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;sumlast3=target+lag(target)+lag2(target)&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;which &lt;EM&gt;&lt;STRONG&gt;includes the current observation&lt;/STRONG&gt;&lt;/EM&gt; and the prior 2 obs.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But you report using&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;sumlast3=lag(target)+lag2(target)+lag3(target);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;which &lt;EM&gt;&lt;STRONG&gt;excludes the current observation&lt;/STRONG&gt;&lt;/EM&gt; and includes the prior three.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Also, since you want to reset sumlast3 to missing for the first two observations for any given OBS value, you'll probably want something like:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;sumlast3=sum(target,lag(target),lag2(target));
if lag2(obs)^=obs then sumlast3=.;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;However, you haven't explained the rules for calculating HIT.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I use the SUM function instead of the "+" operators to avoid error messages for the first two observations of the dataset&amp;nbsp; (the lagged values would be missing).&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;</description>
      <pubDate>Wed, 04 May 2022 22:16:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-Step-Consecutive-Sum/m-p/811581#M320128</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2022-05-04T22:16:57Z</dc:date>
    </item>
    <item>
      <title>Re: Data Step Consecutive Sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-Step-Consecutive-Sum/m-p/811603#M320137</link>
      <description>&lt;P&gt;In your want data, sumlast3 never equals 1, so hit should never be set to 1.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/424656"&gt;@atnk&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Hi, In the data set below, I need to sum the last 3 records of (target) to create the var (sumlast3). The var hit is simply if sumlast3 equals 1. I used the lag to create sumlast3 but it is not working. sumlast3=lag(target)+lag2(target)+lag3(target);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;obs&lt;/TD&gt;
&lt;TD&gt;target&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;a&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;a&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;a&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;a&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;a&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;a&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;b&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;b&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;b&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;b&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;b&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Want:&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;obs&lt;/TD&gt;
&lt;TD&gt;target&lt;/TD&gt;
&lt;TD&gt;sumlast3&lt;/TD&gt;
&lt;TD&gt;hit&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;a&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;a&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;a&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;a&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;a&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;a&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;b&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;b&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;b&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;b&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;b&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks.&amp;nbsp;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 05 May 2022 05:07:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-Step-Consecutive-Sum/m-p/811603#M320137</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2022-05-05T05:07:47Z</dc:date>
    </item>
    <item>
      <title>Re: Data Step Consecutive Sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-Step-Consecutive-Sum/m-p/811667#M320160</link>
      <description>&lt;PRE&gt;data have;
infile cards expandtabs truncover;
input obs $ target;
cards;
a	1
a	0
a	1
a	1
a	1
a	1
b	0
b	1
b	1
b	1
b	1
;

data want;
 set have;
 target1=lag(target);target2=lag2(target);
 if obs=lag(obs) and obs=lag2(obs) then do;
  sumlast3=sum(target,target1,target2);
  hit=ifn(sumlast3=3,1,0);
 end;
 drop target1 target2;
run;&lt;/PRE&gt;</description>
      <pubDate>Thu, 05 May 2022 13:52:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-Step-Consecutive-Sum/m-p/811667#M320160</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2022-05-05T13:52:24Z</dc:date>
    </item>
    <item>
      <title>Re: Data Step Consecutive Sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-Step-Consecutive-Sum/m-p/811727#M320193</link>
      <description>Thanks, it’s a typo, the hit equals 1 when sumlast3 equals 3. The lag with the sum function works well.</description>
      <pubDate>Thu, 05 May 2022 18:55:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-Step-Consecutive-Sum/m-p/811727#M320193</guid>
      <dc:creator>atnk</dc:creator>
      <dc:date>2022-05-05T18:55:38Z</dc:date>
    </item>
    <item>
      <title>Re: Data Step Consecutive Sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-Step-Consecutive-Sum/m-p/811728#M320194</link>
      <description>Thanks, this solution also works.</description>
      <pubDate>Thu, 05 May 2022 18:57:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-Step-Consecutive-Sum/m-p/811728#M320194</guid>
      <dc:creator>atnk</dc:creator>
      <dc:date>2022-05-05T18:57:24Z</dc:date>
    </item>
  </channel>
</rss>

