一家批发苗圃正在销售花园花卉,他们想按月汇总其销售数字。为什么月份功能不起作用?
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;
答案 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;