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 ![]()
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!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
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.