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