%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