【SAS BASE】PROC TABULATE(输出更加精美的tabulate报告)

PROC TABULATE的一般形式:(主语与FREQ过程不同,这里是table 语句,不是tables)

1 PROC TABULATE FORMAT=options;/*FORMAT=选项改变table中所有cell的格式*/
2      VAR analysis-variable-list;
3      CLASS classification-variable-list;/*在下面table语句中出现的变量必须预先在VAR语句或CLASS出现过*/
4      TABLE page-dimension, row-dimension, column-dimension/BOX=option MISSTEXT=option;
5 /*BOX=选项指定输出的tabulate报表的左上角的空格内的句子;MISSTEXT=选项赋特定的值给空的data cells*/
6 RUN;     

特别要注意的是:

  1. VAR语句:在VAR语句中除了列出变量名之外,还可以包含统计量,如:ALL(在该维度求和),MAX,MIN,MEAN,MEDIAN,MODE,N,NMISS,PCTN,PCTSUM,STDDEV,SUM.
  2. TABLE语句同纬度变量的Concateting,crossing, and grouping:
    1 concatenating: simply list them separated by a space;
    2 crossing: list variables或keywords separated by an *;
    3 grouping:将变量或关键字列表在括号内
    
     1.keyword ALL is generally concatenated;
     2. To request other statistics, cross the keyword with the variable name.

例子:

 1 DATA boats;
 2      INFILE 'C:Myrawdataoat.dat';
 3      INPUT Name $ 1-12 port $ 14-20 Locomotion $ 22-26 Type $ 28-30 price 32-36;
 4 RUN;
 5 *Changing headers;
 6 PROC FORMAT;/*若想改变CLASS变量的值做的标题,step1:通过此FORMAT语句定义新格式*/
 7     VALUE $typ 'cat'='Catamaran'
 8                'sch'='schooner’
 9                'yac'='yacht';
10 RUN;
11 
12 PROC TABULATE DATA=boats FORMAT=DOLLAR9.2;
13     CLASS Locomotion Type;
14      VAR Price;
15       Format Type $ typ.;
16       TABLE  Locomotion='' ALL, /*改变变量的标题*/
17                   MEAN=''*Price='Mean price by type of boat'*(Type='' ALL)/BOX=’Full day Excursions ‘ MISSTEXT='none';/*改变关键词的标题*/
18       TITLE;
19 RUN;

备注:

  • 改变PROC TABULATE输出表格的标题
  1. 改变CLASS变量的分类值形成的标题:通过此FORMAT定义一个新的格式,然后通过FORMAT语句赋值给此分类变量;
  2. 改变变量或keyword的标题:将此变量或keyword与用单引号括起来的新标题等号相连即可,特别的,若令变量=’’,则标题被消去。

  • 为每个Cells指定不同的结果:在PROC FORMAT后加上FORMAT=选项,使得表中所有单元的格式一样,若需要不同单元有不同的格式,则需要在TABLE语句后加上FORMAT=选项才能实现(TO apply a format to an individual variable, cross it with the variable name).例如:
    1 TABLE Region, Mean*(Sales*FORMAT=COMMA 8.0
    2                     Profit*FORMAT=DOLLAR10.2);
原文地址:https://www.cnblogs.com/chenyn68/p/3866510.html