%macro name_modal();
/*Create macro variables which contain the modalities of variables*/
%do i=1 %to &num_Var;
data _null_;
set &lib..Table_variable_modal_&i.;
call symputx('num_Mod'||compress(put(&i,4.)),_N_,"G");
call symputx('table'||compress(put(&i,4.))||'modal'||compress(put(_N_,4.)),compress(&&name_Var&i.),"G");
run;
%end;
/*Display modalities by variable*/
%do i=1 %to &num_Var;
%put &&name_Var&i. has &&num_Mod&i. modalities ;
%do j=1 %to &&num_Mod&i.;
%put %nrstr(&&tableb&i.modal&j.);
%end;
%end;
%mend name_modal;
%name_modal();
我希望代码是自我记录。 我会解释这里的问题。 一切工作正常,直到我传递给用来显示变量的模态的程序的第二个。无与伦比的引号SAS
例如,当在宏变量被放养模式的名称都像
$ 100%BLO,
100%的色,
AVON & RAGOBERT,
百龄坛,
L'OREAL,
AT & T,
UVA
etc
我无法正确使用%放。 我试过使用%bquote和%nrstr,但问题依然存在。 到目前为止,我能看到的唯一解决方案是修改模式的名称,但由于名称来自客户端,因此我无法对数据进行修改。
谢谢
奇怪的是这个工程。我这样说是因为我记得使用%superq,但我仍然有一些错误。当我明天尝试再次调试程序时,我会给你反馈。谢谢 – afiqjohari
不错...我很惊讶%superq解决了&j。 –
我刚刚要调试程序。当我只在模态上循环时(j = 1到numMod),程序运行良好。到目前为止,%superq()能够完成它的工作。但是,当我尝试向此添加另一个循环时,意思是(i = 1到numVar),%superq()无法解释%&& tableb&i.modal&j。正确。 – afiqjohari