<?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: Retain and lag by group in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Retain-and-lag-by-group/m-p/704120#M215829</link>
    <description>&lt;P&gt;i think something is missing because below what i have with your code :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;in my case , i would like to keep same value from each same combination of year and id.&lt;/P&gt;&lt;P&gt;in the excel formula i always take previsous value of combiantion of year and id ( and not the last record )&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;example : year=3 and id=1&amp;nbsp; i expect to have same value&amp;nbsp; 0,989869698 and not 0,984726761&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;year&lt;/TD&gt;&lt;TD&gt;id&lt;/TD&gt;&lt;TD&gt;x&lt;/TD&gt;&lt;TD&gt;want&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0,00218127&lt;/TD&gt;&lt;TD&gt;0,99781873&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0,00278531&lt;/TD&gt;&lt;TD&gt;0,995039496&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0,00519557&lt;/TD&gt;&lt;TD&gt;0,989869698&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0,00519557&lt;/TD&gt;&lt;TD&gt;0,984726761&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0,00791179&lt;/TD&gt;&lt;TD&gt;0,97693581&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0,00791179&lt;/TD&gt;&lt;TD&gt;0,969206499&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0,0096322&lt;/TD&gt;&lt;TD&gt;0,959870908&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0,0096322&lt;/TD&gt;&lt;TD&gt;0,950625239&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0,01199142&lt;/TD&gt;&lt;TD&gt;0,939225893&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0,01199142&lt;/TD&gt;&lt;TD&gt;0,92796324&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0,01567087&lt;/TD&gt;&lt;TD&gt;0,913421249&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
    <pubDate>Mon, 07 Dec 2020 12:26:55 GMT</pubDate>
    <dc:creator>bebess</dc:creator>
    <dc:date>2020-12-07T12:26:55Z</dc:date>
    <item>
      <title>Retain and lag by group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Retain-and-lag-by-group/m-p/704116#M215826</link>
      <description>&lt;P&gt;Hi everyone,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;i try to reproduce the scenario below , any help / idea ?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;YEAR&lt;/TD&gt;&lt;TD&gt;id&lt;/TD&gt;&lt;TD&gt;x&lt;/TD&gt;&lt;TD&gt;ord&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;WANT&lt;/TD&gt;&lt;TD&gt;EXCEL Formula&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0,00218127&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0,99781873&lt;/TD&gt;&lt;TD&gt;1-C2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0,00278531&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;0,9950395&lt;/TD&gt;&lt;TD&gt;E2*(1-C3)&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0,00519557&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;0,9898697&lt;/TD&gt;&lt;TD&gt;E3*(1-C4)&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0,00519557&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;0,9898697&lt;/TD&gt;&lt;TD&gt;E3*(1-C5)&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0,00791179&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;0,98203806&lt;/TD&gt;&lt;TD&gt;E5*(1-C6)&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0,00791179&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;0,98203806&lt;/TD&gt;&lt;TD&gt;E5*(1-C7)&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;0,00218127&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;0,99781873&lt;/TD&gt;&lt;TD&gt;1-C8&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;0,00278531&lt;/TD&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;0,9950395&lt;/TD&gt;&lt;TD&gt;E8*(1-C9)&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;0,00278531&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;0,992268&lt;/TD&gt;&lt;TD&gt;E9*(1-C10)&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Mon, 07 Dec 2020 12:01:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Retain-and-lag-by-group/m-p/704116#M215826</guid>
      <dc:creator>bebess</dc:creator>
      <dc:date>2020-12-07T12:01:50Z</dc:date>
    </item>
    <item>
      <title>Re: Retain and lag by group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Retain-and-lag-by-group/m-p/704118#M215827</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
set have;
by id;
retain want;
if first.id
then want = 1 - x;
else want = want * (1 - x);
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 07 Dec 2020 12:11:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Retain-and-lag-by-group/m-p/704118#M215827</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2020-12-07T12:11:49Z</dc:date>
    </item>
    <item>
      <title>Re: Retain and lag by group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Retain-and-lag-by-group/m-p/704120#M215829</link>
      <description>&lt;P&gt;i think something is missing because below what i have with your code :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;in my case , i would like to keep same value from each same combination of year and id.&lt;/P&gt;&lt;P&gt;in the excel formula i always take previsous value of combiantion of year and id ( and not the last record )&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;example : year=3 and id=1&amp;nbsp; i expect to have same value&amp;nbsp; 0,989869698 and not 0,984726761&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;year&lt;/TD&gt;&lt;TD&gt;id&lt;/TD&gt;&lt;TD&gt;x&lt;/TD&gt;&lt;TD&gt;want&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0,00218127&lt;/TD&gt;&lt;TD&gt;0,99781873&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0,00278531&lt;/TD&gt;&lt;TD&gt;0,995039496&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0,00519557&lt;/TD&gt;&lt;TD&gt;0,989869698&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0,00519557&lt;/TD&gt;&lt;TD&gt;0,984726761&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0,00791179&lt;/TD&gt;&lt;TD&gt;0,97693581&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0,00791179&lt;/TD&gt;&lt;TD&gt;0,969206499&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0,0096322&lt;/TD&gt;&lt;TD&gt;0,959870908&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0,0096322&lt;/TD&gt;&lt;TD&gt;0,950625239&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0,01199142&lt;/TD&gt;&lt;TD&gt;0,939225893&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0,01199142&lt;/TD&gt;&lt;TD&gt;0,92796324&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0,01567087&lt;/TD&gt;&lt;TD&gt;0,913421249&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Mon, 07 Dec 2020 12:26:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Retain-and-lag-by-group/m-p/704120#M215829</guid>
      <dc:creator>bebess</dc:creator>
      <dc:date>2020-12-07T12:26:55Z</dc:date>
    </item>
    <item>
      <title>Re: Retain and lag by group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Retain-and-lag-by-group/m-p/704173#M215847</link>
      <description>&lt;P&gt;thanks for your help , i added a line to the following code, in that case the count of _want restart to 1 for each new id in the dataset&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;your remarks is welcome &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;&lt;BR /&gt;data want(drop=_:);&lt;BR /&gt;set have;&lt;BR /&gt;by id year;&lt;BR /&gt;if first.id then want=1-x;&lt;BR /&gt;if first.id then _want=1; /* to restart _want equal to 1 for each new id and not keep previsou value of the previous id*/&lt;BR /&gt;else want=_want*(1-x);&lt;BR /&gt;if last.year then _want=want;&lt;BR /&gt;retain _want;&lt;BR /&gt;run;&lt;/P&gt;</description>
      <pubDate>Mon, 07 Dec 2020 15:48:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Retain-and-lag-by-group/m-p/704173#M215847</guid>
      <dc:creator>bebess</dc:creator>
      <dc:date>2020-12-07T15:48:17Z</dc:date>
    </item>
    <item>
      <title>Re: Retain and lag by group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Retain-and-lag-by-group/m-p/704184#M215851</link>
      <description>&lt;P&gt;Seems like you got it!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I would slightly change the layout of the code:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want (drop=_:);
set have;
by id year;
retain _want;
if first.id
then do;
  want = 1 - x;
  _want = 1;
end;
else want = _want * (1 - x);
if last.year then _want = want;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;mainly to avoid the two IF FIRST.ID.&lt;/P&gt;</description>
      <pubDate>Mon, 07 Dec 2020 16:10:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Retain-and-lag-by-group/m-p/704184#M215851</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2020-12-07T16:10:01Z</dc:date>
    </item>
    <item>
      <title>Re: Retain and lag by group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Retain-and-lag-by-group/m-p/704266#M215885</link>
      <description>&lt;P&gt;You can produce what you want by including SET/BY pair of statements inside a do until (last.id) loop:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
  do until (last.id);
    set have;
	by id year;
	if first.year then _factor=coalesce(want,1);
	want=_factor*(1-x);
	output;
  end;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Inside the loop, the _FACTORr variable is automatically retained, so it's easily updated with the advent of each new year.&amp;nbsp; And that updated value is taken from WANT (also retained inside the loop) prior to the recalculation of WANT.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The coalesce function is needed to establish a _FACTOR of 1 at the start of each id, since WANT is not retained across id's.&lt;/P&gt;</description>
      <pubDate>Mon, 07 Dec 2020 19:52:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Retain-and-lag-by-group/m-p/704266#M215885</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2020-12-07T19:52:03Z</dc:date>
    </item>
    <item>
      <title>Re: Retain and lag by group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Retain-and-lag-by-group/m-p/704287#M215895</link>
      <description>thanks for sharing, will have a look on it !)</description>
      <pubDate>Mon, 07 Dec 2020 21:28:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Retain-and-lag-by-group/m-p/704287#M215895</guid>
      <dc:creator>bebess</dc:creator>
      <dc:date>2020-12-07T21:28:08Z</dc:date>
    </item>
  </channel>
</rss>

