%macro df_lag(data= ,index=, n=, delim=);
%let i=1;
%do %while(%scan(%quote(&index), &i, %quote(&delim)) ne );
%let Nindex=%scan(%quote(&index),&i, %quote(&delim));
%let j=1;
%do j=1 %to &n;
data &data;
set &data;
lg&j&Nindex=lag&j.(&Nindex);
run;
%end;
%let i=%eval(&i+1);
%end;
%mend;
options symbolgen;
%df_lag(data=sashelp.prdsale,index=%str(predict,actual,year),n=3, delim=',');