DATA Step, Macro, Functions and more

Subtraction function

Accepted Solution Solved
Reply
Regular Contributor
Posts: 216
Accepted Solution

Subtraction function

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
Solution
‎11-26-2012 03:19 PM
PROC Star
Posts: 7,467

Re: Subtraction function


All Replies
Super User
Posts: 11,336

Re: Subtraction function

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.

Solution
‎11-26-2012 03:19 PM
PROC Star
Posts: 7,467

Re: Subtraction function

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

Regular Contributor
Posts: 216

Re: Subtraction function

Yes, I did the sum() above and that worked for me, but I think the DIF would work as well. Thank you both.

Paul

PROC Star
Posts: 7,467

Re: Subtraction function

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.

Regular Contributor
Posts: 216

Re: Subtraction function

Thats all I need in this particular situation actually: current - previous.

Paul

Super User
Posts: 10,018

Re: Subtraction function

and take a look at function range();

data _null_;
a=4; b=1;
x=range(a,b);
put x=;
run;

Ksharp

🔒 This topic is solved and locked.

Need further help from the community? Please ask a new question.

Discussion stats
  • 6 replies
  • 9173 views
  • 3 likes
  • 4 in conversation