SAS宏代码可生成特定年份的平均销售额

时间:2019-01-25 17:20:54

标签: macros sas

我正在尝试编写一个宏代码,以生成特定年份的平均销售额。说今天,我要报告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。任何帮助,将不胜感激。  PS这里是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均值过程。

1 个答案:

答案 0 :(得分:0)

您可以在此处简化此操作:

  1. 将YEAR计算移至WHERE子句
  2. 将格式应用于ORDER_DATE变量YEAR4。它将显示并汇总为一年。
  3. 用&year替换代码中的2008。

    %macro yearAvg(year=);
    proc means data=salesxls mean;
    where year(order_date)=&year.;
    class order_date;
    format order_date year4.;
    var total_retail_price;
    run;
    %mend;
    
    %yearAvg(year=2008);