can anyone answer this query??
there is a input variable called X. need to derive variable called 'Y'.. the scenario is wherever there is 999 value there it has to add 0.1 to the previous x value.. if more than one 999 is there then the order should be 3.1, 3.2,3.3
X Y
1 1
2 2
3 3
4 4
999 4.1
1 1
2 2
3 3
999 3.1
999 3.2
Use the lag function.
X_lag = lag(X);
Y=ifn(X=999, x_lag+0.1, X);
This doesn't deal with consecutive 999 so you'll need to figure out the logic for that.
data have;
input X ;
cards;
1
2
3
4
999
1
2
3
999
999
;
run;
data want;
set have;
retain Y;
if X ne 999 then Y=X;
else Y=Y+0.1;
run;
Or more simple :
data want;
set have;
if X ne 999 then Y=X;
else Y+0.1;
run;
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.