【发布时间】:2019-01-25 17:20:54
【问题描述】:
我正在尝试编写一个生成特定年份平均销售额的宏代码。假设今天我要报告 year=2008,明天要报告 year=2009。 数据有 Order_date 变量,格式为 mmddyy10。
我正在尝试通过以下代码来实现:
%macro yearly(yr=%sysfunc(year("&sysdate"d ));
proc means data=salesxls;
class &yr;
where year(order_date) == &yr;
title "yearly avg sales for &yr";
run;
%mend yearly;
这不起作用。原因可能是我用来提取年份的 %sysfunc 。任何帮助,将不胜感激。 P.S A Macro 新手在这里
编辑: 有效的单年代码如下:
data new;
set work.salesxls;
yr=year(Order_date); /** I extracted the year from Order_date)**/
run;
proc means data=new mean;
class yr;
var total_retail_price;
where yr=2008;
run;
在上面的代码中,我首先创建了一个提取年份的数据集。然后我将该数据用于 proc 表示过程。
【问题讨论】:
-
编写宏首先从工作代码开始。您的 proc 意味着一年的样子,没有有效的宏观逻辑。然后我们可以帮你把它变成一个宏。
-
您可能会发现这两个链接很有用:这个链接展示了如何使用格式来汇总不同级别(即年份)的数据。 gist.github.com/statgeek/… 这个展示了如何将程序变成宏:github.com/statgeek/SAS-Tutorials/blob/master/…
-
@Reeza 请看编辑