我有 169 个城镇,我想为其迭代一个宏。我需要使用城镇名称(而不是城镇代码)保存输出文件。我有一个TOWN
包含城镇代码和城镇名称的数据集 ( )。是否可以为%let
i=town-code 的每次迭代设置一个设置为 town-name 的语句?
我知道我可以使用索引函数列出城镇名称,但我想要一种设置索引函数的方法,以便%let
在 i=TOWN.town-code 时为 TOWN.town-name 设置一条语句。
下面的所有答案似乎都是可能的。我现在使用了 %let = %scan( ,&i) 选项。一个限制是城镇名称可以超过一个单词,所以我用下划线代替了我稍后更正的空格。
这是我的宏。我将 proc 报告输出到 169 个城镇中的每一个的 excel 中。我需要将 excel 文件保存为城镇名称,并且标题中需要包含城镇名称。然后,在 Excel 中,我将所有 169 个工作表合并到一个工作簿中。
%MACRO BY_YEAR;
%let townname=Andover Ansonia Ashford Avon ... Woodbury Woodstock;
%do i = 1999 %to 2006;
%do j = 1 %to 169;
%let name = %scan(&townname,&j);
ods tagsets.msoffice2k file="&ASR.\Town_Annual\&i.\&name..xls" style=minimal;
proc report data=ASR nofs nowd split='/';
where YR=&i and TWNRES=&j;
column CODNUM AGENUM SEX,(dths_sum asr_sum seasr_sum);
define CODNUM / group ;
define agenum / group ;
define sex / across ;
define dths_sum / analysis ;
define asr_sum / analysis ;
define seasr_sum / analysis ;
break after CODNUM / ul;
TITLE1 "&name Resident Age-Specific Mortality Rates by Sex, &i";
TITLE2 "per 100,000 population for selected causes of death";
run;
ods html close;
%end;
%end;
%MEND;