これは私のコードです:
libname Project 'XXX'; run;
%let dname = q1males;
%let Gender = 'Male';
%let samp = q1msamp;
%let stats = Malestats;
data project.data1; set project.data;
id = _n_;
run;
data project.&dname; set project.data1;
if Gender = &Gender;
run;
%macro question;
%do i = 1 %to 5;
proc surveyselect data = project.&dname method = SRS sampsize = 27
out = project.&samp;
id _all_;
run;
proc print data = project.&samp;
run;
proc sql;
create table project.&stats&i as
select 'Weight',
avg(Weight) as Mean format 10.2 label 'Mean Weight',
std(Weight) as Std format 10.2 label 'Std. Dev Weight'
from project.&samp;
QUIT;
%end;
%mend question;
%question;
%do j = 1 %to 5;
data project.merged&j;
merge project.femalestats&j project.malestats&j;
by _Tema003 Mean Std;
run;
%do j = 1 %to 5 で始まる最後の 6 行を除いて、すべて正常に動作します。女性と男性のデータセットに対してその前のコードを 2 回実行し、最後の 6 行で女性と男性のデータセットをマージしようとしています。 (例: project. Femalestats1 が project.Malestats1 とマージされ、新しいデータセット project.merged1 になります。)ログにエラーが表示されませんが、マージされたデータセットも取得されません。残念な結果で proc sql を試しました。
何か助けはありますか?ありがとう!