Hi Everyone,
I want to calculate moving quartile not include current record.
This post below is the moving including current record.
https://communities.sas.com/message/173630
I thought it could be a{1:252} but clearly, it doesn't work.
Can you fix it for me or can you suggest other method?
Thank you,
HHC
data have(drop=i);
do i=1 to 10000;
x=ranuni(-1);
output;
end;
run;
data want;
set have;
array a{0:251} _temporary_ ;
a{mod(_n_,252)}=x;
pct_20=pctl(20,of a{*});
run;
Change the order perhaps? I would also set pct_20 to missing if you don't have 252 records so a full moving window.
data want2;
set have;
array a{0:251} aa1-aa252 ;
retain aa: ;
pct_20=pctl(20,of a(*));
a{mod(_n_,252)}=x;
if _n_ <252 then pct_20=.;
run;
Change the order perhaps? I would also set pct_20 to missing if you don't have 252 records so a full moving window.
data want2;
set have;
array a{0:251} aa1-aa252 ;
retain aa: ;
pct_20=pctl(20,of a(*));
a{mod(_n_,252)}=x;
if _n_ <252 then pct_20=.;
run;
Thank you, Reeza for correcting it.
HHC
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.