Прежде всего, извините за мой плохой английский, но это потому, что я не родной.Я тоже новичок в программировании на SAS, и мне нужен кто-то, кто поможет мне с этой проблемой, борющейся со мной.У меня есть один набор данных A, содержащий числовое поле YM, представляющее год и месяц (например, 200902), который я использую для фильтрации набора данных.В частности, я хочу получить N отфильтрованных наборов данных, используя N разностных значений YM.
- A_filtered_200901 = A.filter (YM == 200901)
- A_filtered_200902 = A.filter (YM == 200902)
- A_filtered_200903 = A.filter (YM== 200903)
- ...
Моя идея состояла в том, чтобы сгенерировать последовательность YM, используемую для фильтрации, и затем передать ее в качестве аргумента макросу%, содержащему PROC SQL.В коде / псевдокоде:
data ym_dataset;
date = input(put(20090201, 8.), yymmdd8.);
do i = 1 to 3;
aux1 = intnx('MONTH', date, i);
aux2 = put(aux1, yymmddn8.);
list_of_ym_values = substr(aux2 , 1, 6);
output;
end;
run;
%macro my_macro(list_of_ym_values);
proc sql;
%do i = 1 %to dim(&list_of_ym_values)
select *
from A
where YM = &list_of_ym_values(i)
%end
quit;
%mend my_macro;
%my_macro(ym_dataset[list_of_ym_values])
Я знаю, что это неправильный подход, но я надеюсь, что кто-то может пролить мне свет на то, как это сделать правильно.
Спасибо !!