<?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: Subtracting a field value in current record from previous record in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Subtracting-a-field-value-in-current-record-from-previous-record/m-p/83990#M18136</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Yes HaiKuo, the Dif was not calculating all the time unless it is first and unconditional.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Paul&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 24 Jan 2013 14:42:47 GMT</pubDate>
    <dc:creator>Paul_NYS</dc:creator>
    <dc:date>2013-01-24T14:42:47Z</dc:date>
    <item>
      <title>Subtracting a field value in current record from previous record</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Subtracting-a-field-value-in-current-record-from-previous-record/m-p/83984#M18130</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;I have a data set with a date field as one of the fields in it. I was wondering if anyone knows of a way to take the date value in the present record and subtract from it the same date field in the preceding record?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As the below example indicates, I know the sum function can be used to aggregate numbers from a previous record to the current one, but am not aware of something that performs subtraction.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Paul&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data s1AgeYear1Cum;&lt;/P&gt;&lt;P&gt;set s1AgeYear1;&lt;/P&gt;&lt;P&gt;by startyear exit agecat4 exitMonthCategory;&lt;/P&gt;&lt;P&gt;if first.agecat4 then CumulativeNumber=0;&lt;/P&gt;&lt;P&gt;CumulativeNumber + COUNT;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 23 Jan 2013 20:39:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Subtracting-a-field-value-in-current-record-from-previous-record/m-p/83984#M18130</guid>
      <dc:creator>Paul_NYS</dc:creator>
      <dc:date>2013-01-23T20:39:30Z</dc:date>
    </item>
    <item>
      <title>Re: Subtracting a field value in current record from previous record</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Subtracting-a-field-value-in-current-record-from-previous-record/m-p/83985#M18131</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;is this what you want?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;input date mmddyy10.;&lt;/P&gt;&lt;P&gt;format date mmddyy10.;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;01/20/2013&lt;/P&gt;&lt;P&gt;01/28/2013&lt;/P&gt;&lt;P&gt;02/20/2013&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;set have;&lt;/P&gt;&lt;P&gt;diff=dif(date);&lt;/P&gt;&lt;P&gt;proc print;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 23 Jan 2013 20:44:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Subtracting-a-field-value-in-current-record-from-previous-record/m-p/83985#M18131</guid>
      <dc:creator>Linlin</dc:creator>
      <dc:date>2013-01-23T20:44:53Z</dc:date>
    </item>
    <item>
      <title>Re: Subtracting a field value in current record from previous record</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Subtracting-a-field-value-in-current-record-from-previous-record/m-p/83986#M18132</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Yes Linlin, that would work fine thanks, except for one item--how do it re-set the Dif when I encounter a different grouping of records within the data set? In other words, if I have the record set sorted by child IDs and I want the Dif to perform the calculation within each set of child IDs records, how do I reset it when I encounter a new set of child records?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Paul&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 23 Jan 2013 20:56:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Subtracting-a-field-value-in-current-record-from-previous-record/m-p/83986#M18132</guid>
      <dc:creator>Paul_NYS</dc:creator>
      <dc:date>2013-01-23T20:56:43Z</dc:date>
    </item>
    <item>
      <title>Re: Subtracting a field value in current record from previous record</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Subtracting-a-field-value-in-current-record-from-previous-record/m-p/83987#M18133</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;BR /&gt;Hi Paul,&lt;/P&gt;&lt;P&gt;the modified code:&lt;/P&gt;&lt;P&gt;proc sort data=have;&lt;/P&gt;&lt;P&gt;by id date;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;set have;&lt;/P&gt;&lt;P&gt;by id;&lt;/P&gt;&lt;P&gt;diff=ifn(first.id,.,dif(date));&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Good luck!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Modified after Haikuo and Paul's comments.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 23 Jan 2013 20:59:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Subtracting-a-field-value-in-current-record-from-previous-record/m-p/83987#M18133</guid>
      <dc:creator>Linlin</dc:creator>
      <dc:date>2013-01-23T20:59:37Z</dc:date>
    </item>
    <item>
      <title>Re: Subtracting a field value in current record from previous record</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Subtracting-a-field-value-in-current-record-from-previous-record/m-p/83988#M18134</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Linlin. I used a variation of this and it works fine.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Paul&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data permHearingsNonFreedt1;&lt;/P&gt;&lt;P&gt;set sasf.permHearingsNonFreed;&lt;/P&gt;&lt;P&gt;by entity_id permHearDate;&lt;/P&gt;&lt;P&gt;diff=dif(permHearDate);&lt;/P&gt;&lt;P&gt;if first.entity_id then diff=.;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 23 Jan 2013 21:46:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Subtracting-a-field-value-in-current-record-from-previous-record/m-p/83988#M18134</guid>
      <dc:creator>Paul_NYS</dc:creator>
      <dc:date>2013-01-23T21:46:42Z</dc:date>
    </item>
    <item>
      <title>Re: Subtracting a field value in current record from previous record</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Subtracting-a-field-value-in-current-record-from-previous-record/m-p/83989#M18135</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;LinLin,&lt;/P&gt;&lt;P&gt;The reason that Paul's variation works, while yours does not is that you have used dif() CONDITIONALLY. Dif() behaves just like lag(). Please see following two examples:&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;&amp;nbsp; input id date;&lt;/P&gt;&lt;P&gt;&amp;nbsp; cards;&lt;/P&gt;&lt;P&gt;&amp;nbsp; 1 1&lt;/P&gt;&lt;P&gt;&amp;nbsp; 1 3&lt;/P&gt;&lt;P&gt;&amp;nbsp; 2 4&lt;/P&gt;&lt;P&gt;&amp;nbsp; 2 1&lt;/P&gt;&lt;P&gt;&amp;nbsp; ;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; data want_1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set have;&lt;/P&gt;&lt;P&gt;by id;&lt;/P&gt;&lt;P&gt;if first.id then diff=.;&lt;/P&gt;&lt;P&gt;else diff=dif(date);&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want_2;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set have;&lt;/P&gt;&lt;P&gt;&amp;nbsp; by id;&lt;/P&gt;&lt;P&gt;diff=ifn(first.id,.,dif(date));&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The second one works only because it calls for dif() unconditionally, but apply the outcome with a condition. This thing bit me numerous times.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Haikuo &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 24 Jan 2013 14:30:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Subtracting-a-field-value-in-current-record-from-previous-record/m-p/83989#M18135</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2013-01-24T14:30:28Z</dc:date>
    </item>
    <item>
      <title>Re: Subtracting a field value in current record from previous record</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Subtracting-a-field-value-in-current-record-from-previous-record/m-p/83990#M18136</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Yes HaiKuo, the Dif was not calculating all the time unless it is first and unconditional.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Paul&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 24 Jan 2013 14:42:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Subtracting-a-field-value-in-current-record-from-previous-record/m-p/83990#M18136</guid>
      <dc:creator>Paul_NYS</dc:creator>
      <dc:date>2013-01-24T14:42:47Z</dc:date>
    </item>
  </channel>
</rss>

