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;

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏光变

你所不知道的Java之Switch

??? Enum,String,Character,Byte,Short,Integer

1550
来自专栏LuckQI

Java核心技术讲解学习三

1789
来自专栏灯塔大数据

技术 | Python从零开始系列连载(十)

导读 Python特色数据类型(元组)(下) 元组和列表相互转化 ? ? 没错,只要在原来的列表外套一层tuple()就可以转为元组 在原来的元组外面套一层li...

3425
来自专栏Albert陈凯

2018-06-13 关于Java集合的小抄

1443
来自专栏技术博文

msgpack分析

MessagePack 是个什么东东?先来看一段官方的解释: MessagePack is an efficient binary serialization ...

3487
来自专栏漫漫深度学习路

pytorch学习笔记(十二):详解 Module 类

Module 是 pytorch 提供的一个基类,每次我们要 搭建 自己的神经网络的时候都要继承这个类,继承这个类会使得我们 搭建网络的过程变得异常简单。 本文...

4716
来自专栏阮一峰的网络日志

Pointfree 编程风格指南

本文要回答一个很重要的问题:函数式编程有什么用? 目前,主流的编程语言都不是函数式的,已经能够满足需求。为何还要学函数式编程呢,只为了多理解一些新奇的概念? ?...

3567
来自专栏Pythonista

Python之路,Day2 - Python基础,列表,循环

912
来自专栏纯洁的微笑

HashMap? ConcurrentHashMap? 相信看完这篇没人能难住你!

Map 这样的 Key Value 在软件开发中是非常经典的结构,常用于在内存中存放数据。

1382
来自专栏Core Net

一个插排引发的设计思想 (三) 委托与事件

2788

扫码关注云+社区

领取腾讯云代金券