我需要創建3個SAS桌子幾年,幾個月和幾個月,這將包括今天的指定範圍。我想有一個更聰明的方式做到這一點,但是我最終喜歡的東西(比方說,如果我需要去5年回):SAS宏按日期循環,如何指示正確的步驟?
%macro asd;
%let today = %sysfunc(today());
%let end_year = %sysfunc(intnx(year,&today,-5));
proc sql;
create table years
(
Years num informat = date9. format = date9.
);
insert into years
%do i = &today. %to &end_year. %by -365;
%if i = &today.-365 %then %do;
values(&i.-1)
%end;
%else %do;
values(&i.)
%end;
%end;
;
quit;
%mend asd;
%asd;
run;
的問題是,我不知道如何來指示作爲一個日期週期的一個步驟,所以我最終得到了確切的數字,這些數字有所不同(年 - 每四年,一個月 - 每兩個月,季度 - 每16個季度)。
我添加了一年,試圖帳戶的循環至少數閏年,但它不工作。所以在繼續數月並且可能實現另一個嵌套循環之前,我想問問是否有更簡單的方法來創建這樣的表?
謝謝! :)
你能告訴你要生成的數據?您想要如何存儲日期的例子有助於解釋您正在嘗試做什麼。如果您只想生成日期範圍,那麼您可以在數據步驟中執行此操作,並避免使用宏代碼和SQL。 – Tom