<?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 Calculate difference of staggered rows in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Calculate-difference-of-staggered-rows/m-p/692417#M210943</link>
    <description>&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Not sure how to go about this at all...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have data like below: DIFF = DUE - ACTV_AMT.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ROW&lt;/TD&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;ACTV_AMT&lt;/TD&gt;&lt;TD&gt;DATE&lt;/TD&gt;&lt;TD&gt;DUE&lt;/TD&gt;&lt;TD&gt;DIFF&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;350&lt;/TD&gt;&lt;TD&gt;09Jul2020&lt;/TD&gt;&lt;TD&gt;745.38&lt;/TD&gt;&lt;TD&gt;395.38&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;300&lt;/TD&gt;&lt;TD&gt;10Aug2020&lt;/TD&gt;&lt;TD&gt;778.7&lt;/TD&gt;&lt;TD&gt;478.7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;300&lt;/TD&gt;&lt;TD&gt;14Aug2020&lt;/TD&gt;&lt;TD&gt;478.7&lt;/TD&gt;&lt;TD&gt;178.7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;178.7&lt;/TD&gt;&lt;TD&gt;09Sep2020&lt;/TD&gt;&lt;TD&gt;571.49&lt;/TD&gt;&lt;TD&gt;392.79&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;400&lt;/TD&gt;&lt;TD&gt;11Sep2020&lt;/TD&gt;&lt;TD&gt;392.79&lt;/TD&gt;&lt;TD&gt;-7.21&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 style="display: inline !important; float: none; background-color: #ffffff; color: #333333; cursor: text; font-family: inherit; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 300; letter-spacing: normal; line-height: 1.7142; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"&gt;I need to add another calculated column to get an output like:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="display: inline !important; float: none; background-color: #ffffff; color: #333333; cursor: text; font-family: inherit; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 300; letter-spacing: normal; line-height: 1.7142; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"&gt;The formula would be: Change =&amp;nbsp; Due(row2) - diff (row 1).&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="display: inline !important; float: none; background-color: #ffffff; color: #333333; cursor: text; font-family: inherit; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 300; letter-spacing: normal; line-height: 1.7142; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"&gt;Another complication: For the first row for Change, formula would be: Change = Due - 0.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ROW&lt;/TD&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;ACTV_AMT&lt;/TD&gt;&lt;TD&gt;DATE&lt;/TD&gt;&lt;TD&gt;DUE&lt;/TD&gt;&lt;TD&gt;DIFF&lt;/TD&gt;&lt;TD&gt;CHANGE&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;350&lt;/TD&gt;&lt;TD&gt;09Jul2020&lt;/TD&gt;&lt;TD&gt;745.38&lt;/TD&gt;&lt;TD&gt;395.38&lt;/TD&gt;&lt;TD&gt;745.38&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;300&lt;/TD&gt;&lt;TD&gt;10Aug2020&lt;/TD&gt;&lt;TD&gt;778.7&lt;/TD&gt;&lt;TD&gt;478.7&lt;/TD&gt;&lt;TD&gt;383.32&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;300&lt;/TD&gt;&lt;TD&gt;14Aug2020&lt;/TD&gt;&lt;TD&gt;478.7&lt;/TD&gt;&lt;TD&gt;178.7&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;178.7&lt;/TD&gt;&lt;TD&gt;09Sep2020&lt;/TD&gt;&lt;TD&gt;571.49&lt;/TD&gt;&lt;TD&gt;392.79&lt;/TD&gt;&lt;TD&gt;392.79&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;400&lt;/TD&gt;&lt;TD&gt;11Sep2020&lt;/TD&gt;&lt;TD&gt;392.79&lt;/TD&gt;&lt;TD&gt;-7.21&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Ideally a proc sql solution is needed but I will take anything to complete this ad hoc first... appreciate any direction&lt;/P&gt;</description>
    <pubDate>Mon, 19 Oct 2020 03:57:18 GMT</pubDate>
    <dc:creator>TheNovice</dc:creator>
    <dc:date>2020-10-19T03:57:18Z</dc:date>
    <item>
      <title>Calculate difference of staggered rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-difference-of-staggered-rows/m-p/692417#M210943</link>
      <description>&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Not sure how to go about this at all...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have data like below: DIFF = DUE - ACTV_AMT.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ROW&lt;/TD&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;ACTV_AMT&lt;/TD&gt;&lt;TD&gt;DATE&lt;/TD&gt;&lt;TD&gt;DUE&lt;/TD&gt;&lt;TD&gt;DIFF&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;350&lt;/TD&gt;&lt;TD&gt;09Jul2020&lt;/TD&gt;&lt;TD&gt;745.38&lt;/TD&gt;&lt;TD&gt;395.38&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;300&lt;/TD&gt;&lt;TD&gt;10Aug2020&lt;/TD&gt;&lt;TD&gt;778.7&lt;/TD&gt;&lt;TD&gt;478.7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;300&lt;/TD&gt;&lt;TD&gt;14Aug2020&lt;/TD&gt;&lt;TD&gt;478.7&lt;/TD&gt;&lt;TD&gt;178.7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;178.7&lt;/TD&gt;&lt;TD&gt;09Sep2020&lt;/TD&gt;&lt;TD&gt;571.49&lt;/TD&gt;&lt;TD&gt;392.79&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;400&lt;/TD&gt;&lt;TD&gt;11Sep2020&lt;/TD&gt;&lt;TD&gt;392.79&lt;/TD&gt;&lt;TD&gt;-7.21&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 style="display: inline !important; float: none; background-color: #ffffff; color: #333333; cursor: text; font-family: inherit; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 300; letter-spacing: normal; line-height: 1.7142; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"&gt;I need to add another calculated column to get an output like:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="display: inline !important; float: none; background-color: #ffffff; color: #333333; cursor: text; font-family: inherit; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 300; letter-spacing: normal; line-height: 1.7142; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"&gt;The formula would be: Change =&amp;nbsp; Due(row2) - diff (row 1).&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="display: inline !important; float: none; background-color: #ffffff; color: #333333; cursor: text; font-family: inherit; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 300; letter-spacing: normal; line-height: 1.7142; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"&gt;Another complication: For the first row for Change, formula would be: Change = Due - 0.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ROW&lt;/TD&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;ACTV_AMT&lt;/TD&gt;&lt;TD&gt;DATE&lt;/TD&gt;&lt;TD&gt;DUE&lt;/TD&gt;&lt;TD&gt;DIFF&lt;/TD&gt;&lt;TD&gt;CHANGE&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;350&lt;/TD&gt;&lt;TD&gt;09Jul2020&lt;/TD&gt;&lt;TD&gt;745.38&lt;/TD&gt;&lt;TD&gt;395.38&lt;/TD&gt;&lt;TD&gt;745.38&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;300&lt;/TD&gt;&lt;TD&gt;10Aug2020&lt;/TD&gt;&lt;TD&gt;778.7&lt;/TD&gt;&lt;TD&gt;478.7&lt;/TD&gt;&lt;TD&gt;383.32&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;300&lt;/TD&gt;&lt;TD&gt;14Aug2020&lt;/TD&gt;&lt;TD&gt;478.7&lt;/TD&gt;&lt;TD&gt;178.7&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;178.7&lt;/TD&gt;&lt;TD&gt;09Sep2020&lt;/TD&gt;&lt;TD&gt;571.49&lt;/TD&gt;&lt;TD&gt;392.79&lt;/TD&gt;&lt;TD&gt;392.79&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;400&lt;/TD&gt;&lt;TD&gt;11Sep2020&lt;/TD&gt;&lt;TD&gt;392.79&lt;/TD&gt;&lt;TD&gt;-7.21&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Ideally a proc sql solution is needed but I will take anything to complete this ad hoc first... appreciate any direction&lt;/P&gt;</description>
      <pubDate>Mon, 19 Oct 2020 03:57:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-difference-of-staggered-rows/m-p/692417#M210943</guid>
      <dc:creator>TheNovice</dc:creator>
      <dc:date>2020-10-19T03:57:18Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate difference of staggered rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-difference-of-staggered-rows/m-p/692421#M210946</link>
      <description>&lt;P&gt;Ideally you won't even think of using sql for a task that requires observations to be processed in a defined order.&lt;/P&gt;
&lt;P&gt;Similar problems are daily posted, so using the search function will show you at least n ways to solve the problem.&lt;/P&gt;
&lt;P&gt;Have a look at the documentation of the lag-function.&lt;/P&gt;</description>
      <pubDate>Mon, 19 Oct 2020 05:09:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-difference-of-staggered-rows/m-p/692421#M210946</guid>
      <dc:creator>andreas_lds</dc:creator>
      <dc:date>2020-10-19T05:09:50Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate difference of staggered rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-difference-of-staggered-rows/m-p/692422#M210947</link>
      <description>&lt;P&gt;I believe this untested data step would work.&amp;nbsp; I would test it if you could provide sample data in the form of a working data step.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The key element here is the lag function:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
  set have;
  by id;
  change=ifn(first.id,due,due-lag(diff));
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;I presume your data are sorted by id/date.&amp;nbsp; The program above embeds the lag function inside an IFN function.&amp;nbsp; The latter tests whether the record-in-hand is the start of an id - in which case the change variable is assigned a value equal to due.&amp;nbsp; Otherwise due is calculated as you describe.&lt;/P&gt;</description>
      <pubDate>Mon, 19 Oct 2020 05:12:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-difference-of-staggered-rows/m-p/692422#M210947</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2020-10-19T05:12:36Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate difference of staggered rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-difference-of-staggered-rows/m-p/699138#M213859</link>
      <description>Thanks so much Mkeintz. Apologies for the delay but was pulled off for an urgent ask on a different project. I tested it and it works!</description>
      <pubDate>Mon, 16 Nov 2020 13:54:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-difference-of-staggered-rows/m-p/699138#M213859</guid>
      <dc:creator>TheNovice</dc:creator>
      <dc:date>2020-11-16T13:54:22Z</dc:date>
    </item>
  </channel>
</rss>

