Hi Everyone,
I want to analyze the lag value of a variable.
Sure I can create lag1, lag2... lag100 variable and do the "array var(*) lag1-lag100;"
However, I wonder if there is any shorter way for the code such as
array var(*) lag1(x)-lag10(x);
Thank you for your help.
HHC
data have(drop=i);
do i=1 to 10000;
x=ranuni(-1);
output;
end;
run;
data want; set have;
array var(*) lag1(x)-lag10(x);
do i=1 to dim(lag);
if lag(i)>0 then t=1;
end;
run;
A macro may simplify the code;
%macro MakeLag;
%do i = 1 %to 100;
Lag&i = Lag&i(x);
%end;
%mend;
Data want;
set have;
%MakeLag;
array var lag1-lag100;
<other code>
run;
BTW your example code
do i=1 to dim(lag);
if lag(i)>0 then t=1;
end;
is incorrect syntax;
do i = 1 to dim(var); /* use the array name which you called var*/
if var >0 then t=1; /* use the array with the index*/
end;
Which will only generate one value of t, depending on the value of the last lagged value as written.
Do you have a license for SAS/ETS (Econometrics and Time Series)?
I'm not sure but I should have it with my SAS
I just check, mine is not SAS/ETS.
A macro may simplify the code;
%macro MakeLag;
%do i = 1 %to 100;
Lag&i = Lag&i(x);
%end;
%mend;
Data want;
set have;
%MakeLag;
array var lag1-lag100;
<other code>
run;
BTW your example code
do i=1 to dim(lag);
if lag(i)>0 then t=1;
end;
is incorrect syntax;
do i = 1 to dim(var); /* use the array name which you called var*/
if var >0 then t=1; /* use the array with the index*/
end;
Which will only generate one value of t, depending on the value of the last lagged value as written.
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 save with the early bird rate—just $795!
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.