SAS将变量格式放在标题中

时间:2014-10-17 21:21:12

标签: sas sas-macro

我有一个名为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”。

任何人都有提示吗?

谢谢!

2 个答案:

答案 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);