在sas中创建一个宏

时间:2015-06-13 12:17:55

标签: macros sas

我有一份每年生成一次的报告。每个报告都有名称中的年份形式 - report-2011.xls,report-2012.xls等。每个报告包含以下变量:ID,SAL =当年的平均月薪,性别(0 =男性,1 =女性),已婚(0 =未婚,1 =已婚),我需要创建一个宏,根据性别类型和已婚类型计算每年薪水的mean.std,min和max。在宏中我需要包含相关年份的参数。 在计算这些参数时如何分别参考每种类型? 以及如何为年份var创建单独的参数?

3 个答案:

答案 0 :(得分:0)

%macro reporting(year, gender, marital_status);
    proc means data=data&year min max std;  * <== you should have separate datasets for different years 
    class gender married ; 

%mend reporting

%reporting( 2015, 1, 1)

这是你要找的东西吗?

答案 1 :(得分:0)

我只是一种生成代码的方法。首先设计您希望它生成的代码。然后你可以弄清楚它的哪些部分有所不同,并用宏变量引用替换它们。宏变量然后成为宏的参数。

proc import datafile="report-2011.xls" out=report_2011 ; run;
proc means data=report_2011 ;
   class gender married;
run;

答案 2 :(得分:0)

proc summary允许您准确控制要跨越数据的方式。

%macro report(year);

proc import datafile="/path/to/report-&year..xls"
    out= salary_data                                                                                                                         
    dbms=csv replace ;                                                                                                                       


proc summary data = salary_data;
    class married gender;
    types married gender married*gender;
    var sal;
    output out = salary_results mean(sal) = mean_salary std(sal) = std_salary;

* Print the summary;
proc print; 

* Delete the data and summary after using them;
proc delete data= salary_data salary_results; run;


%mend report;

请注意,proc摘要会生成其他有用的信息,您可以阅读这些信息here。如果你不需要它们,你可以放弃它们。