<?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: LAG2 function by group in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/LAG2-function-by-group/m-p/387291#M92857</link>
    <description>Thank you &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;</description>
    <pubDate>Fri, 11 Aug 2017 10:47:47 GMT</pubDate>
    <dc:creator>Matt3</dc:creator>
    <dc:date>2017-08-11T10:47:47Z</dc:date>
    <item>
      <title>LAG2 function by group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/LAG2-function-by-group/m-p/387281#M92847</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would be gratefull if anyone could tell me with lagging twice by group,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Lagging once I do this way:&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;if first.id_cst then
offer_kg1=.;
else
offer_kg1=lag(offer_kg);&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;but the option if.second dose not exist so I can not find the way to solve this problem.&lt;/P&gt;&lt;P&gt;Desirable result is&lt;/P&gt;&lt;TABLE cellspacing="0" cellpadding="0" border="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Name&lt;/TD&gt;&lt;TD&gt;Sex&lt;/TD&gt;&lt;TD&gt;Age&lt;/TD&gt;&lt;TD&gt;Lag2_age_by_sex&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Alice&lt;/TD&gt;&lt;TD&gt;F&lt;/TD&gt;&lt;TD&gt;13&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Barbara&lt;/TD&gt;&lt;TD&gt;F&lt;/TD&gt;&lt;TD&gt;13&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Carol&lt;/TD&gt;&lt;TD&gt;F&lt;/TD&gt;&lt;TD&gt;14&lt;/TD&gt;&lt;TD&gt;13&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Jane&lt;/TD&gt;&lt;TD&gt;F&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;13&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Janet&lt;/TD&gt;&lt;TD&gt;F&lt;/TD&gt;&lt;TD&gt;15&lt;/TD&gt;&lt;TD&gt;14&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Joyce&lt;/TD&gt;&lt;TD&gt;F&lt;/TD&gt;&lt;TD&gt;11&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Judy&lt;/TD&gt;&lt;TD&gt;F&lt;/TD&gt;&lt;TD&gt;14&lt;/TD&gt;&lt;TD&gt;15&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Louise&lt;/TD&gt;&lt;TD&gt;F&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;11&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Mary&lt;/TD&gt;&lt;TD&gt;F&lt;/TD&gt;&lt;TD&gt;15&lt;/TD&gt;&lt;TD&gt;14&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Alfred&lt;/TD&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;TD&gt;14&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Henry&lt;/TD&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;TD&gt;14&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;James&lt;/TD&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;14&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Jeffrey&lt;/TD&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;TD&gt;13&lt;/TD&gt;&lt;TD&gt;14&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;John&lt;/TD&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Philip&lt;/TD&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;TD&gt;16&lt;/TD&gt;&lt;TD&gt;13&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Robert&lt;/TD&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Ronald&lt;/TD&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;TD&gt;15&lt;/TD&gt;&lt;TD&gt;16&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Thomas&lt;/TD&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;TD&gt;11&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;William&lt;/TD&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;TD&gt;15&lt;/TD&gt;&lt;TD&gt;15&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;&lt;P&gt;Thanks.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 11 Aug 2017 10:18:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/LAG2-function-by-group/m-p/387281#M92847</guid>
      <dc:creator>Matt3</dc:creator>
      <dc:date>2017-08-11T10:18:31Z</dc:date>
    </item>
    <item>
      <title>Re: LAG2 function by group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/LAG2-function-by-group/m-p/387283#M92849</link>
      <description>&lt;P&gt;Don't do this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;if first.id_cst then
offer_kg1=.;
else
offer_kg1=lag(offer_kg);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Instead do this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;offer_kg1=lag(offer_kg);
if first.id_cst then offer_kg1=.;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;as only this method fills the lag queue reliably.&lt;/P&gt;
&lt;P&gt;Now, for your question, you need a counter:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
set have;
by sex;
if first.sex
then counter = 1;
else counter + 1;
lag2_age_by_sex = lag2(age);
if counter &amp;lt;= 2 then lag2_age_by_sex = .;
drop counter;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Edit: fixed the counter condition to &amp;lt;= 2 &lt;/P&gt;</description>
      <pubDate>Fri, 11 Aug 2017 10:38:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/LAG2-function-by-group/m-p/387283#M92849</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2017-08-11T10:38:04Z</dc:date>
    </item>
    <item>
      <title>Re: LAG2 function by group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/LAG2-function-by-group/m-p/387284#M92850</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/127617"&gt;@Matt3&lt;/a&gt;&lt;/P&gt;
&lt;P&gt;If you use a LAG() function ensure that it gets executed in every single iteration of the data step - so never have it in an ELSE clause.&lt;/P&gt;
&lt;P&gt;Below code should work:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sort data=sashelp.class out=work.class;
  by sex;
run;

data want;
  set work.class;
  by sex;
  lag2AgeBySex=lag2(age);
  if lag2(sex) ne sex then call missing(lag2AgeBySex);
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 11 Aug 2017 10:39:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/LAG2-function-by-group/m-p/387284#M92850</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2017-08-11T10:39:19Z</dc:date>
    </item>
    <item>
      <title>Re: LAG2 function by group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/LAG2-function-by-group/m-p/387287#M92853</link>
      <description>&lt;P&gt;Post example test data in the form of a datastep in a code window (its the {i} above post) and what you want the output to look like.&lt;/P&gt;
&lt;P&gt;By grouping in a dataset like this creates a first and last binary flag based on the first and last in the group, there is no second or third. &amp;nbsp;Also, lag is quite finickety. &amp;nbsp;I tend to find retaining a variable to be more effective in most scenarios. &amp;nbsp;As for helping with code, I have nothing to work with here, hence the need for test data/output - for instance you mention id_cst - this is never shown anywhere in the post.&lt;/P&gt;</description>
      <pubDate>Fri, 11 Aug 2017 10:42:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/LAG2-function-by-group/m-p/387287#M92853</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2017-08-11T10:42:02Z</dc:date>
    </item>
    <item>
      <title>Re: LAG2 function by group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/LAG2-function-by-group/m-p/387291#M92857</link>
      <description>Thank you &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;</description>
      <pubDate>Fri, 11 Aug 2017 10:47:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/LAG2-function-by-group/m-p/387291#M92857</guid>
      <dc:creator>Matt3</dc:creator>
      <dc:date>2017-08-11T10:47:47Z</dc:date>
    </item>
  </channel>
</rss>

