我有一个名为agegroup
的变量,它有很多类别,例如:1 =“0-5”2 =“6-10”等。
如果我创建一个宏来按agegroup
打印数据并希望在标题中使用年龄组格式,我该怎么做?
%macro ageprint(agegrp=1);
proc print data=age;
title "Age group &agegrp";
run;
%mend;
如果我运行此宏,我希望标题打印为“年龄组0-5”而不是“年龄组1”。
任何人都有提示吗?
谢谢!
答案 0 :(得分:3)
您也可以使用#byval(年龄)选项,它采用标题中的格式化值:
proc format ;
value grpformat
0 - 12 = '0 - 12'
12 - 14 = '12 - 14'
other = 'other'
;
run;
proc sort data=sashelp.class out=class; by age; run;
proc print data=class;
by age;
format age grpformat.;
title "Age Group #byval(age)";
run;
如果您需要一个宏来控制输出的位置,您仍然可以使用相同的方法:
%macro ageprint(agegrp=1);
proc print data=age;
by agegrp;
title "Age group #byval(agegrp)";
run;
%mend;
答案 1 :(得分:2)
这样的东西?
proc format ;
value grpformat
0 - 5 = '0 - 5'
6 - 10 = '6 - 10'
other = 'other'
;
run;
%macro ageprint(agegrp);
proc print data=age;
where agegrp=&agegrp;
title "Age group %sysfunc(putn(&agegrp, grpformat.))";
run;
%mend;
%ageprint(agegrp=2);
%ageprint(agegrp=8);