<?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 Use lag function without storing lag function output as a variable in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Use-lag-function-without-storing-lag-function-output-as-a/m-p/718816#M222495</link>
    <description>&lt;BLOCKQUOTE&gt;
&lt;P&gt;Col-A Col-B&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;X &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;9&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;X &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;X &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;Y &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;X &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;I want to add the last values of Col-B when Col-A is equal to "Y" and replace the null value by it&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Output -&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Col-A Col-B&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;X &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;9&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;X &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;X &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;Y &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;X &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;To achieve this output I am using this code-&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;BLOCKQUOTE&gt;
&lt;DIV&gt;data table;&lt;/DIV&gt;
&lt;DIV&gt;set table;&lt;/DIV&gt;
&lt;DIV&gt;if "Col-A"n&amp;nbsp;= "Y"&lt;/DIV&gt;
&lt;DIV&gt;then "Col-B"n=lag1("Col-B"n)+lag2("Col-B"n);&lt;/DIV&gt;
&lt;DIV&gt;run;&lt;/DIV&gt;
&lt;/BLOCKQUOTE&gt;
&lt;DIV&gt;But I am getting the following error in this code -&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV id="sasLogNote1_1613106178416" class="sasNote"&gt;&lt;U&gt;NOTE: Missing values were generated as a result of performing an operation on missing values.&lt;/U&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;LI-WRAPPER&gt;&lt;/LI-WRAPPER&gt;&lt;/P&gt;
&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Note- I am getting proper output when I am storing the lag function variables first and then adding them,&lt;/P&gt;
&lt;P&gt;But I don't want to unnecessarily store variables.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Fri, 12 Feb 2021 05:15:41 GMT</pubDate>
    <dc:creator>Saurabh_Rana</dc:creator>
    <dc:date>2021-02-12T05:15:41Z</dc:date>
    <item>
      <title>Use lag function without storing lag function output as a variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Use-lag-function-without-storing-lag-function-output-as-a/m-p/718816#M222495</link>
      <description>&lt;BLOCKQUOTE&gt;
&lt;P&gt;Col-A Col-B&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;X &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;9&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;X &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;X &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;Y &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;X &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;I want to add the last values of Col-B when Col-A is equal to "Y" and replace the null value by it&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Output -&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Col-A Col-B&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;X &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;9&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;X &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;X &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;Y &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;X &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;To achieve this output I am using this code-&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;BLOCKQUOTE&gt;
&lt;DIV&gt;data table;&lt;/DIV&gt;
&lt;DIV&gt;set table;&lt;/DIV&gt;
&lt;DIV&gt;if "Col-A"n&amp;nbsp;= "Y"&lt;/DIV&gt;
&lt;DIV&gt;then "Col-B"n=lag1("Col-B"n)+lag2("Col-B"n);&lt;/DIV&gt;
&lt;DIV&gt;run;&lt;/DIV&gt;
&lt;/BLOCKQUOTE&gt;
&lt;DIV&gt;But I am getting the following error in this code -&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV id="sasLogNote1_1613106178416" class="sasNote"&gt;&lt;U&gt;NOTE: Missing values were generated as a result of performing an operation on missing values.&lt;/U&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;LI-WRAPPER&gt;&lt;/LI-WRAPPER&gt;&lt;/P&gt;
&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Note- I am getting proper output when I am storing the lag function variables first and then adding them,&lt;/P&gt;
&lt;P&gt;But I don't want to unnecessarily store variables.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 12 Feb 2021 05:15:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Use-lag-function-without-storing-lag-function-output-as-a/m-p/718816#M222495</guid>
      <dc:creator>Saurabh_Rana</dc:creator>
      <dc:date>2021-02-12T05:15:41Z</dc:date>
    </item>
    <item>
      <title>Re: Use lag function without storing lag function output as a variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Use-lag-function-without-storing-lag-function-output-as-a/m-p/718817#M222496</link>
      <description>&lt;P&gt;Try this&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input a $ b;
datalines;
X 9 
X 4 
X 3 
Y . 
X 7 
;

data want;
   set have;
   b = ifn(b = ., sum(lag1(b), lag2(b)), b);
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 12 Feb 2021 05:21:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Use-lag-function-without-storing-lag-function-output-as-a/m-p/718817#M222496</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2021-02-12T05:21:45Z</dc:date>
    </item>
    <item>
      <title>Re: Use lag function without storing lag function output as a variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Use-lag-function-without-storing-lag-function-output-as-a/m-p/718819#M222497</link>
      <description>&lt;P&gt;Your code worked perfectly but can you please explain to me what is wrong with the code that I am using?&lt;/P&gt;</description>
      <pubDate>Fri, 12 Feb 2021 05:40:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Use-lag-function-without-storing-lag-function-output-as-a/m-p/718819#M222497</guid>
      <dc:creator>Saurabh_Rana</dc:creator>
      <dc:date>2021-02-12T05:40:20Z</dc:date>
    </item>
    <item>
      <title>Re: Use lag function without storing lag function output as a variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Use-lag-function-without-storing-lag-function-output-as-a/m-p/718820#M222498</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/316224"&gt;@Saurabh_Rana&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Your code worked perfectly but can you please explain to me what is wrong with the code that I am using?&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Suppose x value is missing and y=5.&lt;BR /&gt;result of x+y will be missing value, while&amp;nbsp;sum(of x, y) = 5&lt;/P&gt;
&lt;P&gt;that is because sum function ignores missing value or relate to it as zero.&lt;/P&gt;</description>
      <pubDate>Fri, 12 Feb 2021 05:58:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Use-lag-function-without-storing-lag-function-output-as-a/m-p/718820#M222498</guid>
      <dc:creator>Shmuel</dc:creator>
      <dc:date>2021-02-12T05:58:43Z</dc:date>
    </item>
    <item>
      <title>Re: Use lag function without storing lag function output as a variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Use-lag-function-without-storing-lag-function-output-as-a/m-p/718821#M222499</link>
      <description>&lt;P&gt;Sure. The Lag Function is not a lookback function. Rather, it is a queue function. When you call Lag2(b) you set up a queue with two entries. THe values in the entries are initially missing. Each time the Lag Function is called, the top value is pushed out and returned from the queue.&amp;nbsp;T&lt;SPAN&gt;he remaining values are shifted upward, and the new value of the argument is placed at the bottom of the queue.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;That is why you will almost certainly get undesired results when calling the Lag Function in conditional logic such as If-Then Statements. However, when we use the Ifn Function, the Lag Function is executed regardless of whether the expression in the first argument is true or not.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Hope this clears things up &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 12 Feb 2021 06:11:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Use-lag-function-without-storing-lag-function-output-as-a/m-p/718821#M222499</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2021-02-12T06:11:58Z</dc:date>
    </item>
    <item>
      <title>Re: Use lag function without storing lag function output as a variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Use-lag-function-without-storing-lag-function-output-as-a/m-p/718826#M222501</link>
      <description>Yeah but there are no null values, in this case, it's simply 3+4=7.</description>
      <pubDate>Fri, 12 Feb 2021 07:50:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Use-lag-function-without-storing-lag-function-output-as-a/m-p/718826#M222501</guid>
      <dc:creator>Saurabh_Rana</dc:creator>
      <dc:date>2021-02-12T07:50:24Z</dc:date>
    </item>
    <item>
      <title>Re: Use lag function without storing lag function output as a variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Use-lag-function-without-storing-lag-function-output-as-a/m-p/718827#M222502</link>
      <description>Thank you for your in-depth explanation but I am still not very clear about why it doesn't work with IF-Then on the other works perfectly with Ifn function.&lt;BR /&gt;         I guess my basic understanding of base sas is not very clear.&lt;BR /&gt;</description>
      <pubDate>Fri, 12 Feb 2021 07:53:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Use-lag-function-without-storing-lag-function-output-as-a/m-p/718827#M222502</guid>
      <dc:creator>Saurabh_Rana</dc:creator>
      <dc:date>2021-02-12T07:53:15Z</dc:date>
    </item>
    <item>
      <title>Re: Use lag function without storing lag function output as a variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Use-lag-function-without-storing-lag-function-output-as-a/m-p/718828#M222503</link>
      <description>&lt;P&gt;The difference is:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;With the If-Then Statements, the lag function executes only when the condition is true.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The Ifn Function is designed so that the lag function executes no matter if the condition is true or not.&lt;/P&gt;</description>
      <pubDate>Fri, 12 Feb 2021 07:56:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Use-lag-function-without-storing-lag-function-output-as-a/m-p/718828#M222503</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2021-02-12T07:56:44Z</dc:date>
    </item>
    <item>
      <title>Re: Use lag function without storing lag function output as a variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Use-lag-function-without-storing-lag-function-output-as-a/m-p/718832#M222505</link>
      <description>Yes exactly, I want the lag function to be executed just for the case where Col-A is equal to "Y",&lt;BR /&gt;&lt;BR /&gt;Like this -&lt;BR /&gt;&lt;BR /&gt;   A        B        lag1(B)      lag2(B)&lt;BR /&gt;   X        4           &lt;BR /&gt;   X        3                           &lt;BR /&gt;   Y        .             3                 4</description>
      <pubDate>Fri, 12 Feb 2021 08:32:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Use-lag-function-without-storing-lag-function-output-as-a/m-p/718832#M222505</guid>
      <dc:creator>Saurabh_Rana</dc:creator>
      <dc:date>2021-02-12T08:32:53Z</dc:date>
    </item>
    <item>
      <title>Re: Use lag function without storing lag function output as a variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Use-lag-function-without-storing-lag-function-output-as-a/m-p/718833#M222506</link>
      <description>&lt;P&gt;Then this is the code for you.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Makes sense?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input a $ b;
datalines;
X 9 
X 4 
X 3 
Y . 
X 7 
;

data want;
   set have;
   b = ifn(a = "Y", sum(lag1(b), lag2(b)), b);
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 12 Feb 2021 08:40:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Use-lag-function-without-storing-lag-function-output-as-a/m-p/718833#M222506</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2021-02-12T08:40:08Z</dc:date>
    </item>
  </channel>
</rss>

