«ВСЕ» - опция для BY (SAS PROC TABULATE) - PullRequest
0 голосов
/ 31 октября 2019
ODS EXCEL FILE="/mypoath/myfile.xlsx" options(
    frozen_headers="3"
    sheet_name="#byval1");
 PROC TABULATE data=out;
  BY byVariable; 
  CLASS varA varB;
  TABLES varA, varB;
 RUN;
ODS EXCEL CLOSE;

Приведенный выше код создает файл Excel с различными листами. Для каждого значения переменной byVariable существует один лист. Есть ли способ создать дополнительный лист «ВСЕ», который содержит результаты для всех значений byVariable вместе? Я имею в виду что-то вроде «ВСЕ» (используется в TABLES-разделе). Я уже пробовал BY ALL byVar (что не работает). Спасибо за помощь!

Ответы [ 2 ]

1 голос
/ 31 октября 2019

Такой опции нет.

Вы можете:

  • повторно запустить отчет без BY или
  • стек данные сами по себе изменяют переменную by на ALL - так, чтобы она была выше, чем у всех существующих значений.
data stacked / view=stacked;
  set 
    have
    have (in=stackflag)
  ;

  if stackflag then do;
    byvar = 'A0'x || 'ALL';        * A0 forces value to be 'after' other original byVar values;
  end
run;

proc tabulate data=stacked;
  by byvar; 
  …

Примечание: 'A0'x является символом ASCII на жестком диске

1 голос
/ 31 октября 2019

Простой ответ - НЕТ. Если вам нужны все данные, не используйте оператор BY.

ODS EXCEL FILE="/mypoath/myfile.xlsx" options(frozen_headers="3");
ODS EXCEL options(sheet_name="ALL");
PROC TABULATE data=out;
  CLASS varA varB;
  TABLES varA, varB;
RUN;
ODS EXCEL options(sheet_name="#byval1");
PROC TABULATE data=out;
  BY byVariable; 
  CLASS varA varB;
  TABLES varA, varB;
RUN;
ODS EXCEL CLOSE;
...