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
Available on demand!
Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.
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: