Это, мы надеемся, простая альтернатива. По мере того, как ваши данные уже заказываются, вы можете создать счетчик даты, который учитывает последний день, а затем использовать оператор where в вашем proc.
Создайте игрушечные данные - случайные даты и 3 числовые столбцы.
data one;
do i = 1 to 50;
date = 20000+i;
num1 = rand("Poisson", 6);
num2 = rand("uniform");
num3 = i*(i-1);
output;
end;
format date date9.;
drop i;
run;
Создать счетчик, на который ссылаются средства proc. последний день, имеет значение 1, то самый старый день имеет значение, 50.
data two;
set one nobs= nobs;
datecount = nobs - _N_ + 1;
run;
Использование где оператор в прок означает - datecount = < 30 говорит, что вы хотите 30 последних дней.
proc means data = two (where = (datecount =< 30));
var num1 num2 num3;
output out = averages (drop = _type_ _freq_)
mean = Mean1 Mean2 Mean3;
run;