<?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: Incorrect results when using lag function in a by group in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Incorrect-results-when-using-lag-function-in-a-by-group/m-p/481492#M124553</link>
    <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
    set have;
    by city;
    prev_income=lag(income);
    if first.city then lag_income=.;
    else lag_income=prev_income;
    drop prev_income;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Thu, 26 Jul 2018 13:33:10 GMT</pubDate>
    <dc:creator>PaigeMiller</dc:creator>
    <dc:date>2018-07-26T13:33:10Z</dc:date>
    <item>
      <title>Incorrect results when using lag function in a by group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Incorrect-results-when-using-lag-function-in-a-by-group/m-p/481486#M124549</link>
      <description>&lt;P&gt;Hi SAS forum,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have this dataset which shows the income of two cities in different dates.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Courier New" size="3" color="#000080"&gt;&lt;STRONG&gt;data&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;have;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Courier New" size="3" color="#0000ff"&gt;input&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;City $&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT face="Courier New" size="3" color="#008080"&gt;1&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="Courier New" size="3"&gt;-&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT face="Courier New" size="3" color="#008080"&gt;5&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="Courier New" size="3"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;date income;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Courier New" size="3" color="#0000ff"&gt;cards&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;tokyo 20150324 10000000&lt;/P&gt;&lt;P&gt;tokyo 20150412 75000000&lt;/P&gt;&lt;P&gt;tokyo 20150522 65000000&lt;/P&gt;&lt;P&gt;miami 20150225 50000000&lt;/P&gt;&lt;P&gt;miami 20150312 60000000&lt;/P&gt;&lt;P&gt;;&lt;FONT face="Courier New" size="3" color="#000080"&gt;&lt;STRONG&gt;run&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Courier New" size="3"&gt;I want to produce results below&amp;nbsp;using the lag function by city group :&lt;/FONT&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;City&lt;/TD&gt;&lt;TD&gt;date&lt;/TD&gt;&lt;TD&gt;income&lt;/TD&gt;&lt;TD&gt;lag_income&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;miami&lt;/TD&gt;&lt;TD&gt;20150225&lt;/TD&gt;&lt;TD&gt;50000000&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;miami&lt;/TD&gt;&lt;TD&gt;20150312&lt;/TD&gt;&lt;TD&gt;60000000&lt;/TD&gt;&lt;TD&gt;50000000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;tokyo&lt;/TD&gt;&lt;TD&gt;20150324&lt;/TD&gt;&lt;TD&gt;10000000&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;tokyo&lt;/TD&gt;&lt;TD&gt;20150412&lt;/TD&gt;&lt;TD&gt;75000000&lt;/TD&gt;&lt;TD&gt;10000000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;tokyo&lt;/TD&gt;&lt;TD&gt;20150522&lt;/TD&gt;&lt;TD&gt;65000000&lt;/TD&gt;&lt;TD&gt;75000000&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;proc sort data = have;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;by city date;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;run;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;data want;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;set have;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;by city;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;lag_income = lag(income);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;run;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;After using the above code, I got the lagged income not by city, but just by the whole data. why? The 3rd observation should have missing as the value of lag_income, but the result got from the income from miami.&amp;nbsp;Why can't I get the lag by group?&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;City&lt;/TD&gt;&lt;TD&gt;date&lt;/TD&gt;&lt;TD&gt;income&lt;/TD&gt;&lt;TD&gt;lag_income&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;miami&lt;/TD&gt;&lt;TD&gt;20150225&lt;/TD&gt;&lt;TD&gt;50000000&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;miami&lt;/TD&gt;&lt;TD&gt;20150312&lt;/TD&gt;&lt;TD&gt;60000000&lt;/TD&gt;&lt;TD&gt;50000000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;tokyo&lt;/TD&gt;&lt;TD&gt;20150324&lt;/TD&gt;&lt;TD&gt;10000000&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#FF0000"&gt;60000000&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;tokyo&lt;/TD&gt;&lt;TD&gt;20150412&lt;/TD&gt;&lt;TD&gt;75000000&lt;/TD&gt;&lt;TD&gt;10000000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;tokyo&lt;/TD&gt;&lt;TD&gt;20150522&lt;/TD&gt;&lt;TD&gt;65000000&lt;/TD&gt;&lt;TD&gt;75000000&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Thu, 26 Jul 2018 13:24:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Incorrect-results-when-using-lag-function-in-a-by-group/m-p/481486#M124549</guid>
      <dc:creator>grace999</dc:creator>
      <dc:date>2018-07-26T13:24:05Z</dc:date>
    </item>
    <item>
      <title>Re: Incorrect results when using lag function in a by group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Incorrect-results-when-using-lag-function-in-a-by-group/m-p/481492#M124553</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
    set have;
    by city;
    prev_income=lag(income);
    if first.city then lag_income=.;
    else lag_income=prev_income;
    drop prev_income;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 26 Jul 2018 13:33:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Incorrect-results-when-using-lag-function-in-a-by-group/m-p/481492#M124553</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2018-07-26T13:33:10Z</dc:date>
    </item>
    <item>
      <title>Re: Incorrect results when using lag function in a by group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Incorrect-results-when-using-lag-function-in-a-by-group/m-p/481493#M124554</link>
      <description>&lt;P&gt;lag() does not take care of any by-group processing on its own, you need to do that yourself:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
set have;
by city;
lag_income = lag(income);
if first.city then lag_income = .;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 26 Jul 2018 13:33:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Incorrect-results-when-using-lag-function-in-a-by-group/m-p/481493#M124554</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2018-07-26T13:33:45Z</dc:date>
    </item>
    <item>
      <title>Re: Incorrect results when using lag function in a by group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Incorrect-results-when-using-lag-function-in-a-by-group/m-p/481494#M124555</link>
      <description>&lt;P&gt;I understand that I can use&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;if first.city then lag_income=.;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;to get the results I want. SAS lag function can't do that itself? is there better way to do it?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;BR /&gt;set have;&lt;BR /&gt;by city;&lt;BR /&gt;lag_income = lag(income);&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;if first.city then lag_income=.;&lt;/FONT&gt;&lt;BR /&gt;run;&lt;/P&gt;</description>
      <pubDate>Thu, 26 Jul 2018 13:35:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Incorrect-results-when-using-lag-function-in-a-by-group/m-p/481494#M124555</guid>
      <dc:creator>grace999</dc:creator>
      <dc:date>2018-07-26T13:35:06Z</dc:date>
    </item>
    <item>
      <title>Re: Incorrect results when using lag function in a by group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Incorrect-results-when-using-lag-function-in-a-by-group/m-p/481496#M124556</link>
      <description>Thank you so much!</description>
      <pubDate>Thu, 26 Jul 2018 13:36:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Incorrect-results-when-using-lag-function-in-a-by-group/m-p/481496#M124556</guid>
      <dc:creator>grace999</dc:creator>
      <dc:date>2018-07-26T13:36:44Z</dc:date>
    </item>
    <item>
      <title>Re: Incorrect results when using lag function in a by group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Incorrect-results-when-using-lag-function-in-a-by-group/m-p/481498#M124558</link>
      <description>&lt;P&gt;Try:&lt;/P&gt;
&lt;PRE&gt;data have;&lt;BR /&gt; input City $ 1-5 date income;&lt;BR /&gt;cards;&lt;BR /&gt;tokyo 20150324 10000000&lt;BR /&gt;tokyo 20150412 75000000&lt;BR /&gt;tokyo 20150522 65000000&lt;BR /&gt;miami 20150225 50000000&lt;BR /&gt;miami 20150312 60000000&lt;BR /&gt;;&lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;proc sort data=have;&lt;BR /&gt; by city;&lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;data want;&lt;BR /&gt; set have;&lt;BR /&gt; by city;&lt;BR /&gt; lag_income=ifn(first.city,.,lag(income));&lt;BR /&gt;run;&lt;/PRE&gt;</description>
      <pubDate>Thu, 26 Jul 2018 13:38:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Incorrect-results-when-using-lag-function-in-a-by-group/m-p/481498#M124558</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2018-07-26T13:38:24Z</dc:date>
    </item>
  </channel>
</rss>

