Lapis Lazuli | Level 10

## substract data from different rows

Hi All,

Below is an example of what I'm trying to achieve. My goal is to get the variable diff.

 X Y LAG DIFF 1 A 2 A 1 1 3 A 2 1 4 A 3 1 5 A 4 1 1 B 2 B 1 1 3 B 2 1 4 B 3 1 5 B 4 1

Mona

3 REPLIES 3
Super User

## Re: substract data from different rows

Why is the first diff 1 when there's no previous value?
If it's always 1 why is this needed? It would be good to include a use case that illustrates a different scenario.

I suspect this is what you're after?

``````data want;
set have;
by y;
_dif = dif(x);
_lag = lag(x);
if first.y then call missing(_dif, _lag);
run;``````

@mona4u wrote:

Hi All,

Below is an example of what I'm trying to achieve. My goal is to get the variable diff.

 X Y LAG DIFF 1 A 2 A 1 1 3 A 2 1 4 A 3 1 5 A 4 1 1 B 2 B 1 1 3 B 2 1 4 B 3 1 5 B 4 1

Mona

Lapis Lazuli | Level 10

## Re: substract data from different rows

because I don't want to subtract different group values.

the diff value not always 1 this is just dummy

Super User

## Re: substract data from different rows

Did you try the code posted?

I'm assuming groups are defined by Y as you never stated. I'm assuming you want the lag of the variable X, also not specifically stated.

If the above is true the answer should be correct. Use the DIF/LAG function and reset at the first of each group.

Discussion stats
• 3 replies
• 230 views
• 2 likes
• 2 in conversation