我有169个城镇,我想迭代一个宏。我需要使用城镇名称(而不是城镇代码)来保存输出文件。我有一个城镇代码和城镇名称的数据集(TOWN)。是否有可能在每个迭代中有一个%let语句被设置为城镇名称,其中i =城镇代码?sas宏指数或其他?
我知道我可以使用索引函数列出城镇名称,但我想设置索引函数的方法,以便在i = 1时设置%let语句到TOWN.town-名称。 TOWN.town代码。
以下所有答案似乎都是可能的。我现在已经使用%let =%扫描(,& i)选项。一个限制是城镇名称可以多于一个单词,所以我用下划线代替了我稍后修正的空格。
这是我的宏。我输出了proc报告,为169个城镇中的每一个城市都表现出色。我需要将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;
不确定您的问题是否得到解答。让我知道如果我可以进一步帮助你,更多的数据示例可以让我们提供更多的见解。 – AFHood 2009-09-24 11:54:40