Dear All:
Could someone tell me how to calculate year to year sales changes when the data is at quarterly interval?
The data looks like:
patient YEAR QTR visit
I do the following
proc sort data=t1 out=t2;
by patient qtr year;
run;
data t3;
set t2;
by patient qtr year;
if first.patient or first.qtr then
lagvisit = .;
else lagvisit = lag(visit);
run;
But the resulting table is not correct. Could someone here tell me why?
All you need is to keep the lag out of the conditional block:
proc sort data=t1 out=t2;
by patient qtr year;
run;
data t3;
set t2;
by patient qtr year;
lagvisit = lag(visit);
if first.qtr then lagvisit = .;
run;
PG
Lag shouldn't be used in a conditional statement (if/then).
Hi, Reeza:
Thanks for the tips. I'll refrain from using the lag function in if/then situation. Could you tell me the most efficient way to achieve the task? I think some kind of proc sql should do the trick, but the syntax would be ugly.
All you need is to keep the lag out of the conditional block:
proc sort data=t1 out=t2;
by patient qtr year;
run;
data t3;
set t2;
by patient qtr year;
lagvisit = lag(visit);
if first.qtr then lagvisit = .;
run;
PG
This works great
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.