2013-07-24 3 views
2

Я писал отчет proc tabulate, в котором суммируются данные в таблице по дням и по неделям.Группа за неделю в SAS

До сих пор это то, что у меня есть:

PROC TABULATE 
DATA=WORK.FB_REPORT 
    ; 
    VAR ORDERS UNITS PRICE SERVICE_CHARGE FRUIT_BOUQUET_REV REVENUE; 
    CLASS SALES_TYPE/ ORDER=UNFORMATTED MISSING; 
    CLASS ORDER_DATE/ ORDER=UNFORMATTED MISSING; 
    TABLE 
      /* By Row*/ 
      ORDER_DATE *( Sum={LABEL="Sum"} ) 
      all = 'Total' *( Sum={LABEL="Sum"} ) , /* CHANGE THIS LINE */ 
      /* By Column */ 
      SALES_TYPE *(ORDERS UNITS PRICE SERVICE_CHARGE MERHCREV REVENUE REVENUE) 
      all = 'Total' *(MERCHREV REVENUE REVENUE) ; 
    ; 

RUN; 

Как я могу изменить all = 'Total'*(Sum={LABEL="Sum"}) заявление таким образом, что, суммируя по группировке недель в ORDER_DATE?

+0

Самый простой способ: создать переменную, содержащую неделю, и использовать ее для вашего отчета. Мне интересно, продемонстрирует ли кто-нибудь интересную функцию, которая элегантно решает ее без дополнительного шага данных. – mvherweg

ответ

1

Вы можете использовать формат для этого. Существует несколько недельных форматов, и если нет никого, кого бы вы ни выбрали, вы можете использовать свой собственный формат изображения. Вот пример использования всегда-популярный формат WEEKU:

proc tabulate data=sashelp.citiday; 
class date; 
var SNYDJCM SNYSECM; 
format date WEEKU11.; 
tables all date,(snydjcm snysecm)*sum; 
run; 

Дата является переменной, которая содержит даты, одну строку в день, за весь период набора данных. (См. Sashelp.citiday для получения дополнительной информации.)

Смежные вопросы