<?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: Subtract from Previous Observation for a group in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Subtract-from-Previous-Observation-for-a-group/m-p/844943#M334042</link>
    <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
    set have;
    by id;
    prev_score=lag(score);
    if first.id then prev_score=.;
    difference=score-prev_score;
    drop prev_score;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Thu, 17 Nov 2022 19:09:58 GMT</pubDate>
    <dc:creator>PaigeMiller</dc:creator>
    <dc:date>2022-11-17T19:09:58Z</dc:date>
    <item>
      <title>Subtract from Previous Observation for a group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Subtract-from-Previous-Observation-for-a-group/m-p/844942#M334041</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have this:&lt;/P&gt;&lt;P&gt;I want to subtract the new score for each player from the previous score of that player.&lt;/P&gt;&lt;P&gt;In case if the player has only one record then leave the calculated field blank.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Please advise.&lt;/P&gt;&lt;P&gt;Thank You&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=""&gt;data have;&lt;BR /&gt;infile datalines dlm="|";&lt;BR /&gt;input id score;&lt;BR /&gt;datalines;&lt;BR /&gt;1|1&lt;BR /&gt;2|3&lt;BR /&gt;2|1&lt;BR /&gt;2|3&lt;BR /&gt;2|3&lt;BR /&gt;3|11&lt;BR /&gt;4|11&lt;BR /&gt;5|1&lt;BR /&gt;5|1&lt;BR /&gt;6|1&lt;BR /&gt;7|11&lt;BR /&gt;8|1&lt;BR /&gt;9|11&lt;BR /&gt;10|11&lt;BR /&gt;10|11&lt;BR /&gt;;run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 17 Nov 2022 19:05:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Subtract-from-Previous-Observation-for-a-group/m-p/844942#M334041</guid>
      <dc:creator>david27</dc:creator>
      <dc:date>2022-11-17T19:05:37Z</dc:date>
    </item>
    <item>
      <title>Re: Subtract from Previous Observation for a group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Subtract-from-Previous-Observation-for-a-group/m-p/844943#M334042</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
    set have;
    by id;
    prev_score=lag(score);
    if first.id then prev_score=.;
    difference=score-prev_score;
    drop prev_score;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 17 Nov 2022 19:09:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Subtract-from-Previous-Observation-for-a-group/m-p/844943#M334042</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2022-11-17T19:09:58Z</dc:date>
    </item>
    <item>
      <title>Re: Subtract from Previous Observation for a group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Subtract-from-Previous-Observation-for-a-group/m-p/844944#M334043</link>
      <description>&lt;P&gt;I'm a bit confused here. Do you want to&amp;nbsp;&lt;SPAN&gt;subtract the new score from the previous score or the previous score from the new score? The latter seems to make most sense?&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 17 Nov 2022 19:12:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Subtract-from-Previous-Observation-for-a-group/m-p/844944#M334043</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2022-11-17T19:12:42Z</dc:date>
    </item>
    <item>
      <title>Re: Subtract from Previous Observation for a group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Subtract-from-Previous-Observation-for-a-group/m-p/844945#M334044</link>
      <description>&lt;P&gt;What about&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;difference = score - lag(score);
if first.id then difference = .;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;?&lt;/P&gt;</description>
      <pubDate>Thu, 17 Nov 2022 19:14:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Subtract-from-Previous-Observation-for-a-group/m-p/844945#M334044</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2022-11-17T19:14:32Z</dc:date>
    </item>
    <item>
      <title>Re: Subtract from Previous Observation for a group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Subtract-from-Previous-Observation-for-a-group/m-p/844953#M334050</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/10892"&gt;@PaigeMiller&lt;/a&gt;&amp;nbsp;:&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank You for helping me here.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This solves the purpose but have a follow up question because of this:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="https://documentation.sas.com/doc/en/pgmsascdc/9.4_3.2/lefunctionsref/n0l66p5oqex1f2n1quuopdvtcjqb.htm" target="_blank" rel="noopener"&gt;https://documentation.sas.com/doc/en/pgmsascdc/9.4_3.2/lefunctionsref/n0l66p5oqex1f2n1quuopdvtcjqb.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Restriction:Note:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;This function is not supported in a DATA step that runs in CAS.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;The VARCHAR type is not supported for arguments in the LAG function.&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So if the Score was provided in Character format, we cannot use lag() ?&lt;/P&gt;</description>
      <pubDate>Thu, 17 Nov 2022 19:29:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Subtract-from-Previous-Observation-for-a-group/m-p/844953#M334050</guid>
      <dc:creator>david27</dc:creator>
      <dc:date>2022-11-17T19:29:48Z</dc:date>
    </item>
    <item>
      <title>Re: Subtract from Previous Observation for a group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Subtract-from-Previous-Observation-for-a-group/m-p/844954#M334051</link>
      <description>&lt;P&gt;Well, you probably should have mentioned in your first post that you are running in CAS.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I don't have any knowledge of how to get this to work in CAS. It is my understanding that LAG is not available in CAS. I know you can run code in SAS Viya that is not run under CAS, in other words, it is base SAS, but I don't know how to do that either.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Yes, score needs to be numeric to get this to work in any version of SAS. You can't do a subtraction on character values.&lt;/P&gt;</description>
      <pubDate>Thu, 17 Nov 2022 19:36:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Subtract-from-Previous-Observation-for-a-group/m-p/844954#M334051</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2022-11-17T19:36:59Z</dc:date>
    </item>
    <item>
      <title>Re: Subtract from Previous Observation for a group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Subtract-from-Previous-Observation-for-a-group/m-p/845048#M334081</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/215179"&gt;@david27&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So if the Score was provided in Character format, we cannot use lag() ?&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;If score is a char variable the subtraction makes no sense at all. You will have to convert the variable to numeric before any calculation takes place.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 18 Nov 2022 06:43:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Subtract-from-Previous-Observation-for-a-group/m-p/845048#M334081</guid>
      <dc:creator>andreas_lds</dc:creator>
      <dc:date>2022-11-18T06:43:27Z</dc:date>
    </item>
    <item>
      <title>Re: Subtract from Previous Observation for a group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Subtract-from-Previous-Observation-for-a-group/m-p/845308#M334176</link>
      <description>&lt;P&gt;You can simulate the lag function with a retain statement:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
infile datalines dlm="|";
input id score;
datalines;
1|1
2|3
2|1
2|3
2|3
3|11
4|11
5|1
5|1
6|1
7|11
8|1
9|11
10|11
10|11
;run;

data want;
  set have;
  by id;
  retain old_score .;
  if first.id then old_score=.;
  if old_score^=. then difference=score-old_score;
  output;

  old_score=score;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The "trick" here is to output the current observation prior to updating the (retained) old_score variable with the current score value.&lt;/P&gt;</description>
      <pubDate>Sun, 20 Nov 2022 04:16:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Subtract-from-Previous-Observation-for-a-group/m-p/845308#M334176</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2022-11-20T04:16:33Z</dc:date>
    </item>
  </channel>
</rss>

