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
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
because I don't want to subtract different group values.
the diff value not always 1 this is just dummy
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.
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.