Переместить заголовок класса Proc Tabulate в другой столбец - PullRequest
0 голосов
/ 23 октября 2018

В моем выводе Proc Tabulate заголовки классов находятся выше уровней классов.Есть ли способ переместить заголовки классов в собственный столбец, который находится рядом с уровнями класса?В желаемом выводе изображения заголовок класса «Образование» находится в отдельной ячейке рядом с уровнями класса.Как мне это сделать?

Пример заголовков классов

PROC FORMAT;
PICTURE PCTF (ROUND) OTHER='009.9%';
RUN;
ODS HTML PATH="%SYSFUNC(GETOPTION(WORK) )" STYLE=JOURNAL1A;
TITLE "Question 21x";
PROC TABULATE DATA = 208s;
CLASS EDUC 
      AREA
      AGE 
      SEX 
      CENRACE 
      POVERTY 
      EDUC 
      INSURE 
      HEALTH
      Q21x;
CLASSLEV EDUC AREA AGE SEX CENRACE POVERTY EDUC INSURE HEALTH Q21x ;

TABLE AREA    = 'Area in Region' * (ROWPCTN='   '*f=PCTF.)
      AGE     = 'Age'            * (ROWPCTN='   '*f=PCTF.) 
      SEX                        * (ROWPCTN='   '*f=PCTF.)
      CENRACE = 'Race'           * (ROWPCTN='   '*f=PCTF.)
      POVERTY = 'Poverty Status' * (ROWPCTN='   '*f=PCTF.)
      EDUC                       * (ROWPCTN='   '*f=PCTF.)
      INSURE                     * (ROWPCTN='   '*f=PCTF.) 
      HEALTH                     * (ROWPCTN='   '*f=PCTF.) , Q21x = '   ';
RUN;

1 Ответ

0 голосов
/ 23 октября 2018

Вы можете перенести существующие данные в категориальную форму, что даст вам больший контроль над макетом измерения строки.Переместите ROWPCTN в измерение столбца, чтобы исключить пустой столбец (в заголовке строки), который в противном случае появился бы, если бы ROWPCTN было в измерении строки.Используйте NOCELLMERGE для предотвращения слияния ячеек в первой строке данных.

Например, начинайте с

data have;
  do personid = 1 to 1000;
    area = cats('area_',0 + floor(5 * ranuni(123)));
    age  = cats('age_',13 + floor(7 * ranuni(123)));
    sex  = cats('sex_',1 + floor( 2 * ranuni(123)));
    q21x = byte(65+(5*ranuni(123)));
    output;
  end;  
  label area = 'Area Label';
run;

proc tabulate data=have;
  class area age sex q21x;
  table 
    ( area age sex ) * (rowpctn=' '), q21x
  / nocellmerge;
run;

Proc TABULATE output

Иверсия транспонированных данных

proc transpose data=have out=have_for_table;
  by personid q21x notsorted;
  var area age sex;
run;

proc tabulate data=have_for_table missing;
  class _name_ _label_ col1 q21x;
  table 
    _name_='' * _label_='' * col1=''
    ,
    q21x * (rowpctn='')
    /
    nocellmerge
    ;
run;

enter image description here

...