一. PROC TABULATE

1.基本形式:

PROC TABULATE;CLASS classification-variable-list;TABLE page-dimention, row-dimention, column-dimention;
RUN;

其中,我们用CLASS 声明的变量,告诉SAS哪些变量是分类变量;
TABLE 声明了3个维度,依次为:页维度,行维度,列维度;不同维度之间以“,”进行区隔
需要注意的是:声明一个维度,此时的维度为列维度;声明两个维度,则为行维度与列维度;
应用技巧:先定义行维度和列维度,达到满意效果后再添加页维度,可以增加机器效率;

例子:本次使用SASHELP.BWEIGHT(包含婴儿出生体重与母亲若干特征)的数据集,查看不同种族,婚姻状态以及婴儿出生性别的新生儿数量;

PROC TABULATE DATA = Sashelp.Bweight;CLASS Black Married Boy;*声明分类变量;TABLE Black, Married, Boy;*页/行/列维度;TITLE 'Number of baby by racial(black), married and gender';
RUN;

结果如下:

MISSING option
某些观测,在CLASS中声明的变量中有缺失,默认情况下SAS会忽略这些观测,不把其算进统计过程中;在option选项中表明MISSING,可以把缺失设为单独一类加入表格的统计;

PROC TABULATE DATA = Sashelp.Bweight MISSING;

2. 在PROC TABULATE中增加描述性统计量

上面提到过,CLASS告诉了SAS哪些变量是分类变量;那么肯定也有另一个声明告诉SAS,哪些变量是连续变量。也就是VAR statement;
基本形式:

VAR numeric-var-list;

而且,TABLE中所有的变量,都需要来自CLASS 或 VAR 声明中的变量;
TABLE 中的维度,也不仅仅只能写变量,还可以包含很多keywords,以下为几个常用的keywords:

keywords 功能
ALL 在一个新的页/行/列中显示总计值
MAX 最大值
MIN 最小值
MEAN 均数
MEDIAN 中位数
MODE MODE
N 非缺失值的个数
NMISS 缺失值的个数
PCTN 个数在组中所占的百分比
PCTSUM 累计百分比
STDDEV 标准差
SUM 加和

知道这些keywords后,需要将其运用进语句中。这里要提到在维度中的三个操作:串接;交叉和分组
串接:以空格串接不同变量

TABLE Black Married Boy;

交叉:以*连接变量或keywords

TABLE MEAN * Black;

分组:以()将同组放入其中

TABLE SUM * (Black Boy);

例子:观察不同性别,婚姻状态的妇女所生婴儿的出生体重均值,代码如下

PROC TABULATE DATA = Sashelp.Bweight MISSING;VAR Weight;CLASS Married Boy Black;TABLE Black Married, MEAN * Weight * (Boy ALL);TITLE 'Mean Bithweight between boy, black and married';
RUN;

结果如下:

3. 细节处理:控制PROC TABULATE的输出外观

(1)FORMAT=option:控制表格中的输出格式,如FORMAT = COMMA5.1;

PROC TABULATE DATA = Sashelp.Bweight FORMAT = COMMA7.1;VAR Weight;CLASS Married Boy Black;TABLE Black Married, MEAN * Weight * (Boy ALL);TITLE 'Mean Bithweight between boy, black and married';
RUN;


需要注意,COMMA格式表示生成带有逗号区隔的数字,.1代表保留1位小数,7代表输出的“位数”:3,411.2共占位7个字符。如果位数不够(如小于7),SAS会输出不一样的结果,感兴趣的可以试试看,这里不再赘述。

(2)BOX 和 MISSTEXT = options:空白格子填充,二者都在TABLE 命令后 以 / 做区隔进行声明;
BOX=option可以把表格中空白的左上角填充以内容,如:

TABLE Black Married, MEAN * Weight * (Boy ALL) / BOX = 'Mean birthweight';

效果图:

同理, MISSTEXT = option告诉SAS在空白的单元格内填充“说明”,如MISSTEXT = ‘None’;

(3) 更改表头(包括变量名和变量值)
1)变量值:使用PROC FORMAT,此处不赘述;
2)变量名(指在CLASS命令中声明的变量):
在变量名后直接注明。如:Married = ‘是否结婚’;若想删除一个表头,如Mean,只需Mean=’’ 即可。
但需要注意的是,当统计分析变量(MEAN SUM etc)等在行维度时,声明MEAN=’'时,SAS会留下空白的单元格,不把其删除。在这种情况下,需要在TABLE命令后声明ROW=FLOAT(需要以 / 区隔),才能达到删除表头的目的。

PROC FORMAT;VALUE marriedfmt 0 = '否'1 = '是';VALUE boyfmt 0 = '女孩'1 = '男孩';VALUE blackfmt 0 = '否'1 = '是';
RUN;
PROC TABULATE DATA = Sashelp.Bweight FORMAT = COMMA7.1;VAR Weight;CLASS Married Boy Black;TABLE Black='是否是黑人' Married='是否结婚', MEAN=''* Weight='婴儿平均出生体重g' * (Boy='' ALL='合计')/ BOX = '特征变量';FORMAT Black blackfmt. Married marriedfmt. Boy boyfmt.;TITLE 'Mean Bithweight between boy, black and married';
RUN;

本例中的统计变量MEAN处于列维度,因此不需要声明**/ROW=FLOAT**命令;效果如下:

是不是清晰许多了?

(4)为table cell设置不同格式;
基本形式:在变量名后增加*FORMAT=option
本次我们在VAR命令中增加妈妈孕期体重增长变量(Momwtgain),并设置其为保留2位小数;
代码如下:

PROC TABULATE DATA = Sashelp.Bweight FORMAT = COMMA7.1;VAR Weight Momwtgain;CLASS Married Boy Black;TABLE Black='是否是黑人' Married='是否结婚', MEAN=''* (Weight='婴儿平均出生体重g'*FORMAT = COMMA7.1 Momwtgain='妈妈孕期平均体重增长'*FORMAT=6.2) * (Boy='' ALL='合计')/ BOX = '特征变量';FORMAT Black blackfmt. Married marriedfmt. Boy boyfmt.;TITLE;
RUN;

结果如下:

至此,PROC TABULATE的笔记到此结束。自己依旧很懒惰,完成这篇笔记时已过很多时日。检讨中

后续将继续统计报表的学习SAS learning_5: 统计报表制作(2)——PROC REPORT,期待~

SAS learning_4: 统计报表制作(1)——PROC TABULATE相关推荐

  1. SAS learning_5: 统计报表制作(2)——PROC REPORT

    二. PROC REPORT 1. 基本形式: PROC REPORT NOWINDOWS;COLUMN variable-list: RUN; 如果不写NOWINDOWS,SAS会打开交互性REPO ...

  2. SAS PROC TABULATE学习笔记01

    SAS中的PROC TABULATE功能比较强大,使用好了能节约不少时间而且不易出错. TABULATE作用? 一句话:A procedure that displays descriptive st ...

  3. SpringBoot+Vue使用——项目统计报表制作(v-charts)

    在毕业设计中,后台数据繁琐,看起来一大片,想要快速获取自己所需要的数据很麻烦,为了更直观的了解数据的动向,需要做一些数据图(折线图.饼状图等等),在此我们使用v-charts进行图表的绘制 在使用 e ...

  4. java导出sas_[转载]SAS Proc Export导出文件

    SAS 导出文件 导出到excel PROC EXPORT DATA=Work.myfile OUTFILE='C:tempexample.xls' DBMS=EXCEL2000 REPLACE; S ...

  5. 【sas】tabulate报表

    TABULATE过程的主要功能是输出统计量表,它是对整个数据集中的数据的汇总. TABULATE过程的一般格式为 PROC TAULATE DATA=数据集名称: CLASS 分类变量: VAR 分析 ...

  6. SAS学习笔记(二)排序、打印和汇总数据

    二.排序.打印和汇总数据 1.where语句生成子集 语法:where condition 放在proc print xxx之后. Mary Cassatt ,Impressionism ,U Pau ...

  7. sql 分类汇总 列_分类汇总哪家强?R、Python、SAS、SQL?

    Excel数据透视表(Pivot Table)可以快速汇总大量数据,能够分类汇总和聚合数值数据,按类别和子类别汇总数据,功能十分强大,并且提供了展开.折叠.行列交换等交互式方法,对使用者来说十分的友好 ...

  8. 代码chaid_[转载]经典决策树之SAS实现--CHAID

    一.使用SAS/EM界面生成CHAID决策树 CHAID (Chi-Square Automatic Interaction Detector)演算法為利用卡方分析(Chi-Square Test)預 ...

  9. 一些常用的SAS命令

    一些常用的SAS命令 1. 转换文本数据文件的数据步的一般形式为: data 数据集名:infile 文件名:  input 变量输入设定:  run: 2. 指定逻辑文件名语句的一般形式为:file ...

最新文章

  1. vector 常见方法
  2. Jupyter notebook快捷操作
  3. ConcurrentHashMap的源码分析-数据迁移阶段的实现分析
  4. 结构化查询语言包含哪些方面?
  5. Educational Codeforces Round 25 C. Multi-judge Solving
  6. Chrome 错误代码:ERR_UNSAFE_PORT
  7. 小汤学编程之jQuery学习day03——事件、效果、插件
  8. 【华为云技术分享】【一统江湖的大前端】PPT制作库impress.js
  9. 10个值得关注的python博客(转)
  10. java的io流有什么作用_Java IO流详解(一)——简单介绍
  11. Servlet 身份验证体系结构
  12. matlab经纬度画轨迹图_MATLAB绘制地图
  13. 一键seo提交收录_做SEO优化长尾关键词排名你需要这些网站收录提交入口资源
  14. 二进制、八进制、十六进制的写法
  15. 什么是API,SDK 两者有什么关系?
  16. 电脑录屏快捷键是什么?教你一招可以自己设定
  17. 3.1.hole_behind_comprehensive_teaching_complex 综教楼后的那个坑
  18. PS后期合成深海海底水下人像摄影效果
  19. LaTeX 使用tips与EDAS论文提交
  20. Mysql第一阶段结束语

热门文章

  1. 出口押汇,打包贷款,福费廷,再贴现的区别
  2. 写给Java开发者的Python入门
  3. 怎么通过视图修改数据mysql
  4. 2021-10-19
  5. 四轮面试阿里菜鸟网络 Java 程序员,失败经历记录分享!
  6. matlab压缩机,基于MATLAB的滑片压缩机运动学数值分析
  7. 天上掉馅饼 期望DP
  8. Paper--Models Genesis: Generic Autodidactic Models for 3D Medical Image Analysis
  9. Linux | 新建虚拟硬盘并挂盘
  10. Weak Entity Sets