- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Hi
I have used the sum function in a data step to add the value of a previous row to a current one. I was wondering if there is something similar for subtracting a value in a previous row from a value in the current data set? I did not see anything for 'subtract' and tried adding a negative value using the sum function but that did not work either:
data s1AgeCleanCare1;
set s1AgeCleanSort1;
by cnty_name startyear agecat4 exitMonthCategory;
if first.agecat4 then CumulativeNumber=OutOfHomeCare;
OutOfHomeCare + (-CumulativeNumber);
run;
Paul
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Couldn't you just use sum(OutOfHomeCare-CumulativeNumber);
It is documented at: http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000245953.htm
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
The DIF (var) function, similar to LAG in concept, will give the difference from the previous record and the current or up to 99 records for a variable depending on DIF, DIF2, ..., DIF99. However you don't want to use it after IF statements as you will likely get unexpected results.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Couldn't you just use sum(OutOfHomeCare-CumulativeNumber);
It is documented at: http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000245953.htm
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Yes, I did the sum() above and that worked for me, but I think the DIF would work as well. Thank you both.
Paul
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Paul, Depends upon what you need. I didn't even see the part of your post concerning previous record. Since the sum function retains a value across records, it could be used to start with a value and then subtract a current record's value from it. The dif function would just get the difference between the current and previous record.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Thats all I need in this particular situation actually: current - previous.
Paul
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
and take a look at function range();
data _null_; a=4; b=1; x=range(a,b); put x=; run;
Ksharp