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
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.