SAS中文论坛
标题:
请教宏中如何将宏变量中的变量分开
[打印本页]
作者:
shiyiming
时间:
2009-8-20 16:23
标题:
请教宏中如何将宏变量中的变量分开
如%macro list(dataa,cn,group,yvar,var);
proc glm data=&dataa;
class &cn &group;
model &var=&group &yvar &cn &group*&cn/nouni ss3;
repeated time/printe;
ods output sphericity=test;
ods output modelanova(MATCH_ALL)=anova;
%mend list;
调用时:
%list(fxf,cn,group,po5a00h1,p05a05h1 p05a1h1 p05a2h1 p05a4h1 p05a6h1 p05a8h1 p05a10h1 p05a12h1 p05a14h1 p05a18h1)
现在是可以进行分析,如果想把变量Var分解为p05a05h1 p05a1h1 p05a2h1 p05a4h1 p05a6h1 和p05a8h1 p05a10h1 p05a12h1 p05a14h1 p05a18h1两部分,或者想单独调用Var中的每一个变量,如p05a05h1、p05a1h1、p05a2h1等,该如何实现呢?
谢谢!
作者:
shiyiming
时间:
2009-8-20 16:57
标题:
Re: 请教宏中如何将宏变量中的变量分开
可以用 %scan %qscan 来拆分
如:
%let param1=%qscan(&var,1," ");
%let param2=%qscan(&var,2," ");
也可以用一个循环变量,分解开
如:
%do i=1 %to 10;
%let parma&i=%qscan(&var,i," ");
%end;
作者:
shiyiming
时间:
2009-8-20 17:00
标题:
Re: 请教宏中如何将宏变量中的变量分开
非常感谢楼上的回复!
作者:
shiyiming
时间:
2009-8-20 17:52
标题:
Re: 请教宏中如何将宏变量中的变量分开
[code:1ag13qg2]%macro list_var /parmbuff;
options nosymbolgen nomprint;
%let num=1;
%let temp=%scan(&syspbuff,&num,',()');
%do %while(&temp ne);
%if &num=1 %then %let dataa=&temp;
%else %if &num=2 %then %let cn=&temp;
%else %if &num=3 %then %let group=&temp;
%else %if &num=4 %then %let yvar=&temp;
%else %let var=&temp;
/* proc glm */
/*%if &num>4 %then %do;
proc glm data=&dataa;
class &cn &group;
model &var=&group &yvar &cn &group*&cn/nouni ss3;
repeated time/printe;
ods output sphericity=test;
ods output modelanova(MATCH_ALL)=anova;
run;
%end;*/
/* temp debug begin */
%if &num=4 %then %do; /* temp put */
%put NOTE: BEGIN ***;
%put NOTE: *** DATA: &dataa CN: &cn GROUP: &group YVAR: &yvar ***;
%end;
%else %if &num>4 %then %put NOTE: *** 第%eval(&num.-4)个VAR为:&temp ***;
/* temp debug end */
%let num=%eval(&num+1);
%let temp=%scan(&syspbuff,&num,',()');
%end;
%put NOTE: END ***; /* temp debug */
%mend;
%list_var(fxf,cn,group,po5a00h1,p05a05h1 p05a1h1 p05a2h1 p05a4h1 p05a6h1 p05a8h1 p05a10h1 p05a12h1 p05a14h1 p05a18h1)
%list_var(fxf,cn,group,po5a00h1,p05a05h1 p05a1h1 p05a2h1 p05a4h1 p05a6h1,p05a8h1 p05a10h1 p05a12h1 p05a14h1 p05a18h1)
%list_var(fxf,cn,group,po5a00h1,p05a05h1,p05a1h1,p05a2h1)[/code:1ag13qg2]
欢迎光临 SAS中文论坛 (https://mysas.net/forum/)
Powered by Discuz! X3.2