処理グループ (i)、複製 (j)、およびシリアル番号 (k) を組み合わせた ID (bee_created) のリストを作成したいと考えています。私は 9 回の反復実験を行っていますが、それぞれの治療グループのシリアル番号にはわずかな違いがあります。したがって、マクロ do ループですべての ID を作成する方がはるかに効率的です。いくつかの記事を閲覧しましたが、%scan が使用されている可能性があると思いますが、動作するコードを生成できませんでした。
レプリケートごとに、5 つの処理グループ「aa」、「ab」、「ac」、「ea」、および「ec」があります。次の 4 つのデータ セットを置き換えるマクロが必要です。i、j、k の値だけが異なることに注意してください。それ以外はコピーアンドペーストです。前もって感謝します
/*dataset 1*/
data tag_num_replicate01_02;
length i $5. bee_created $9.;
exp_name="&exp_name";
do i= 'aa','ab', 'ac', 'ea','ec';
do j='01','02';
do k=101 to 210;
bee_created=compress (i||j||'-'||put(k, best.));
rename i=group_id;
output;
end;
end;
end;
run;
/*dataset 2*/
data tag_num_replicate04a;
length i $5. bee_created $9.;
exp_name="&exp_name";
do i= 'aa','ab', 'ac';
do j='04';
do k=501 to 615;
bee_created=compress (i||j||'-'||put(k, best.));
rename i=group_id;
output;
end;
end;
end;
run;
/*dataset 3*/
data tag_num_replicate04b;
length i $5. bee_created $9.;
exp_name="&exp_name";
do i= 'ea';
do j='04';
do k=501 to 623;
bee_created=compress (i||j||'-'||put(k, best.));
rename i=group_id;
output;
end;
end;
end;
run;
/*dataset 4*/
data tag_num_replicate04c;
length i $5. bee_created $9.;
exp_name="&exp_name";
do i= 'ec';
do j='04';
do k=501 to 620;
bee_created=compress (i||j||'-'||put(k, best.));
rename i=group_id;
output;
end;
end;
end;
run;
「aa」、「ab」、および「ac」のリストを生成しようとしましたが、4 つの変数 i、aa、ab、および ac を作成してしまいました。次のコードの何が問題なのかを教えていただければ幸いです。
/*macro not working*/
%macro tag_generate(groups=);
data tag_num_test;
exp_name="&exp_name";
%do i= 1 %to 3;
j=%scan(&groups, &i);
output;
%end;
run;
%mend tag_generate;
%tag_generate(groups= aa ab ac);
チャン