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
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.