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
Build your skills. Make connections. Enjoy creative freedom. Maybe change the world. Registration is now open through August 30th. Visit the SAS Hackathon homepage.
Register today!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.
Select SAS Training centers are offering in-person courses. View upcoming courses for: