Obsidian | Level 7

## 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

1 ACCEPTED SOLUTION

Accepted Solutions
Opal | Level 21

## Re: Subtraction function

Couldn't you just use sum(OutOfHomeCare-CumulativeNumber);

6 REPLIES 6
Super User

## 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.

Opal | Level 21

## Re: Subtraction function

Couldn't you just use sum(OutOfHomeCare-CumulativeNumber);

Obsidian | Level 7

## 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

Opal | Level 21

## 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.

Obsidian | Level 7

## Re: Subtraction function

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

Paul

Super User

## Re: Subtraction function

and take a look at function range();

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

```

Ksharp

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