SAS learning_4: 统计报表制作(1)——PROC TABULATE
一. 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相关推荐
- SAS learning_5: 统计报表制作(2)——PROC REPORT
二. PROC REPORT 1. 基本形式: PROC REPORT NOWINDOWS;COLUMN variable-list: RUN; 如果不写NOWINDOWS,SAS会打开交互性REPO ...
- SAS PROC TABULATE学习笔记01
SAS中的PROC TABULATE功能比较强大,使用好了能节约不少时间而且不易出错. TABULATE作用? 一句话:A procedure that displays descriptive st ...
- SpringBoot+Vue使用——项目统计报表制作(v-charts)
在毕业设计中,后台数据繁琐,看起来一大片,想要快速获取自己所需要的数据很麻烦,为了更直观的了解数据的动向,需要做一些数据图(折线图.饼状图等等),在此我们使用v-charts进行图表的绘制 在使用 e ...
- java导出sas_[转载]SAS Proc Export导出文件
SAS 导出文件 导出到excel PROC EXPORT DATA=Work.myfile OUTFILE='C:tempexample.xls' DBMS=EXCEL2000 REPLACE; S ...
- 【sas】tabulate报表
TABULATE过程的主要功能是输出统计量表,它是对整个数据集中的数据的汇总. TABULATE过程的一般格式为 PROC TAULATE DATA=数据集名称: CLASS 分类变量: VAR 分析 ...
- SAS学习笔记(二)排序、打印和汇总数据
二.排序.打印和汇总数据 1.where语句生成子集 语法:where condition 放在proc print xxx之后. Mary Cassatt ,Impressionism ,U Pau ...
- sql 分类汇总 列_分类汇总哪家强?R、Python、SAS、SQL?
Excel数据透视表(Pivot Table)可以快速汇总大量数据,能够分类汇总和聚合数值数据,按类别和子类别汇总数据,功能十分强大,并且提供了展开.折叠.行列交换等交互式方法,对使用者来说十分的友好 ...
- 代码chaid_[转载]经典决策树之SAS实现--CHAID
一.使用SAS/EM界面生成CHAID决策树 CHAID (Chi-Square Automatic Interaction Detector)演算法為利用卡方分析(Chi-Square Test)預 ...
- 一些常用的SAS命令
一些常用的SAS命令 1. 转换文本数据文件的数据步的一般形式为: data 数据集名:infile 文件名: input 变量输入设定: run: 2. 指定逻辑文件名语句的一般形式为:file ...
最新文章
- vector 常见方法
- Jupyter notebook快捷操作
- ConcurrentHashMap的源码分析-数据迁移阶段的实现分析
- 结构化查询语言包含哪些方面?
- Educational Codeforces Round 25 C. Multi-judge Solving
- Chrome 错误代码:ERR_UNSAFE_PORT
- 小汤学编程之jQuery学习day03——事件、效果、插件
- 【华为云技术分享】【一统江湖的大前端】PPT制作库impress.js
- 10个值得关注的python博客(转)
- java的io流有什么作用_Java IO流详解(一)——简单介绍
- Servlet 身份验证体系结构
- matlab经纬度画轨迹图_MATLAB绘制地图
- 一键seo提交收录_做SEO优化长尾关键词排名你需要这些网站收录提交入口资源
- 二进制、八进制、十六进制的写法
- 什么是API,SDK 两者有什么关系?
- 电脑录屏快捷键是什么?教你一招可以自己设定
- 3.1.hole_behind_comprehensive_teaching_complex 综教楼后的那个坑
- PS后期合成深海海底水下人像摄影效果
- LaTeX 使用tips与EDAS论文提交
- Mysql第一阶段结束语