proc-tabulate-report
data parks;
infile cards;
input name $1-21 type $ Region $ Museums Camping;
cards;
Dinosaur NM West 2 6
Ellis Island NM East 1 0
Everglades NP East 5 2
Grand Canyon NP West 5 3
Great Smoky Mountains NP East 3 10
Hawaii Volcanoes NP West 2 2
Lava Beds NM West 1 1
Status of Liberty NM East 1 0
Theodore Roosevelt NP . 2 2
Yellowstone NP West 9 11
Yosemite NP West 2 13
;
/* 按照region排序
proc sort data=parks;
by type region;
*/
proc print data=parks;
run;
proc tabulate data=parks missing;
* class语句列出分类变量,而VAR语句告诉SAS那些变量装的是连续数据;
class type region;
var Museums Camping;
table type all, sum*(museums*format=6.0 camping*format=6.0)*(region all)/
box='tips' MISSTEXT='none';
run;
proc report 得到的报告类型,部分依据于使用的数值类型。 只要报告中起码有一个字符串变量,默认的报告就是每个观测值一行。但如果报告全是数值 变量,默认 proc report 将会加总这些变量,即使是日期变量也会被加总。;
* 同print输出;
proc report data=parks nowindows headline;
title 'Report with Character and Numberic variable';
run;
全部数值型变量 默认加总;
proc report data=parks nowindows headline;
column museums camping;
Title 'Report with only Numeric Variables';
run;
输出同上;不同就是label修改顶部标语
proc tabulate data=parks;
var museums camping;
table sum=''*(museums camping)*format=6.2;
label museums = 'mus' camping='cam';
Title 'Report with only Numeric Variables';
run;
define
Define 用来为单个变量指定一些选项,基本形式为: DEFINE variable/options’column-header’; Usage 选项 这个选项告诉 SAS 如何使用这个变量,可能的 usage 选项包括: Across:为变量的每一个变量值都创建一个列 Analysis:为变量创建统计量,数值变量默认有这个 usage 选项,且统计量默认为 sum。 Display:为数据集中的每一个观测值都创建一行,对于字符串变量,这个选项是默认的。 Group:为每个变量的变量值都创建一行。 Order:为每个观测值都创建一行,且行值的排列是是按照指定的变量来顺序。
* define xxxx / order 'YYYY',修改顶部;
proc report data=parks missing;
column region name museums camping;
define region / order 'reg';
* define museums / order;
define camping / analysis 'Camp/Groups' format=6.2;
Title 'National Parks and Monuments Arranged by region';
run;
proc report data=parks missing;
column type region museums camping;
define type / group;
define region / group;
title 'yyyyyyyy';
run;
proc report data=parks missing;
column type, (region, (museums camping));
define region /across;
define type / across;
run;
注意下面两种写法
proc report data=parks missing;
column region type, (museums camping);
* group 行;
define region /group;
* across 列;
define type / across;
run;
使用tabulate
proc tabulate data=parks missing;
class region type;
var museums camping;
table region,type*(sum=''*(museums camping))/
box='tip';
Break 语句 可以为报告增加停顿,为每个指定的变量的变量值增加停顿。基本形式如下: BREAK location variable/options; RBREAK location/options; Location 有两种可能值——before 和 after,决定是之前停顿还是之后停顿。斜杠之后的选项告诉 SAS 插入哪种停顿,主要类型有: OL 停顿的地方加入横线 Page 开始一个新的页面 Skip 插入一个空行 Summarize 插入数值变量之和 UL 需要注意的是, break 要求指定一个变量,而 rbreak 不需要。因为 rbreak 只产生一个停顿(开 始或结尾),而 break 语句为指定的变量的每一个变量值都产生停顿。这个变量必须是 group 变量或 order 变量,并且要在 define 语句中定义过。可以在任何报告中使用 rbreak 语句,但 只能在有最起码一个 group 或者 order 变量的报告中使用 break 语句。
proc report data=parks nowindows headline;
column name region museums camping;
define region / order;
break after region / summarize ol skip;
rbreak after /summarize ol skip;
title 'National parks';
run;
使用tabulate不能画出类似的图,很难办到
加入统计量
简单的方法是在 column 语句中加入统计量的关键字,常用的有: Max、 min、 mean、 median、 n、 nmiss、 p90、 pctn、 pctsum、 std、 sum 给变量应用统计量 给变量应用统计量,在变量和统计量之间插入逗号即可,统计量 N 不 需要逗号。如: COLUMN Age,MEDIAN N; 为多个变量应用多个统计量,需要括号,如下面代码要求一个变量 age 应用两个统计量 min 和 max;两个变量 height 和 weight 应用一个统计量 mean: COLUMN Age,(MIN MAX)(Height Weight),MEAN;
proc report data=parks nowindows headline;
column type region N (museums camping), mean;
define region / group;
define type / group;
title 'Statistics with two Group Variables';
run;
proc report data=parks nowindows headline;
column region N type, (museums camping), mean;
define region / group;
define type / across;
title 'Statistics with a Group and Across Variable';
run;
比较异同
proc report data=parks nowindows headline;
column type N (museums camping),mean;
define type / group;
title 'test';
run;
proc report data=parks nowindows headline;
column type N (museums camping),mean;
define type / across;
title 'test';
run;
- 如何通过Google来使用ggplot2可视化
- 【直播】我的基因组54:把我的variation跟dbSNP数据库相比较
- 【翻译】MongoDB指南/引言
- TensorFlow从0到1 | 第十二章:TensorFlow构建3层NN玩转MNIST
- 如何通过预加载器提升网页加载速度
- 分钟学会正则表达式(译)
- TensorFlow从0到1 | 第十一章 74行Python实现手写体数字识别
- 让浏览器不再显示 https 页面中的 http 请求警报
- 跨域访问和防盗链基本原理
- 【翻译】MongoDB指南/CRUD操作(一)
- 【直播】我的基因组50:从测序深度和位点间距来看SNV分布情况
- 【翻译】MongoDB指南/CRUD操作(二)
- 【翻译】MongoDB指南/CRUD操作(三)
- 为什么 Laravel 会成为最成功的 PHP 框架?
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法