为什么月份功能在这里不起作用?

时间:2019-05-17 17:36:33

标签: sas

一家批发苗圃正在销售花园花卉,他们想按月汇总其销售数字。为什么月份功能不起作用?

    DATA sales;
    input CustID $ @9 SaleDate MMDDYY10. Petunia SnapDragon Marigold;
    datalines;
    756-01 05/04/2013 120 80 110
    834-01 05/12/2013 90 160 60
    901-02 05/18/2013 50 100 75
    834-01 06/01/2013 80 60 100
    756-01 06/11/2013 10 160 75
    901-02 06/19/2013 60 60 60
    756-01 06/25/2013 85 110 100
    ;
    Month = MONTH (SaleDate);
    run;
    PROC SORT DATA = sales;
    BY Month;
    RUN;
    PROC MEANS DATA = sales;
    VAR Petunia SnapDragon Marigold;
    by Month;
    run;

2 个答案:

答案 0 :(得分:1)

您必须将数据步骤语句保留在数据步骤中。您不能将它们放在两个步骤之间。

您的赋值语句在数据步骤之后,在附加步骤之前,什么也不做,RUN;语句。将其移到DATALINES;语句之前。

data sales;
  input CustID $ @9 SaleDate :MMDDYY10. Petunia SnapDragon Marigold;
  Month = MONTH(SaleDate);
datalines;

对于使用内联数据的数据步骤,数据是该步骤中的最后一件事。我还将删除多余的RUN;语句以避免这种混淆。

答案 1 :(得分:0)

如果使用month语句并将CLASS变量格式化为月级渲染,则可以避免计算额外的变量SaleDate。输出结构将与BY略有不同。 CLASS语句导致 tighter 输出。此示例还使用NDEC来减少小数位数。

DATA sales;
input CustID $ SaleDate : MMDDYY10. Petunia SnapDragon Marigold;
datalines;
756-01 05/04/2013 120 80 110
834-01 05/12/2013 90 160 60
901-02 05/18/2013 50 100 75
834-01 06/01/2013 80 60 100
756-01 06/11/2013 10 160 75
901-02 06/19/2013 60 60 60
756-01 06/25/2013 85 110 100
;

PROC MEANS DATA=sales ndec=2;
  VAR Petunia SnapDragon Marigold;
  class SaleDate;
  format SaleDate yymon7.;
run;

enter image description here