マクロを繰り返したい169の町があります。(タウンコードではなく)タウン名を使用して出力ファイルを保存する必要があります。TOWN
タウンコードとタウン名のデータセット( )があります。%let
i = town-codeである反復ごとにtown-nameに設定されるステートメント を持つことは可能ですか?
index関数を使用して町の名前を一覧表示できることは知っていますが、%let
i=TOWN.town-codeのときにステートメントがTOWN.town-nameに設定されるようにindex関数を設定する方法が必要です。
以下のすべての答えは可能のようです。今のところ、%let =%scan(、&i)オプションを使用しています。制限は、町の名前が複数の単語になる可能性があることです。そのため、後で修正するスペースをアンダースコアに置き換えました。
これは私のマクロです。169の町のそれぞれに優れたprocレポートを出力します。町の名前としてExcelファイルを保存し、ヘッダーに町の名前を含める必要があります。次に、Excelで、169個のワークシートすべてを1つのブックにマージします。
%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;