1 PROC REPORT语法

PROC REPORT data= SAS-data-set options ;

COLUMNS variable_1 …. variable_n;

DEFINE variable_1;

DEFINE variable_2;

. . .

DEFINE variable_n;

COMPUTE blocks

BREAK … ;

RBREAK … ;

RUN;

COLUMNS:指定输出到报表的列

DEFINE:上述列的格式等

COMPUTE:计算模块

BREAK / RBREAK:生成合计,或报表其它类型的格式。

PROC REPORT的选项Options有很多,下面介绍几个常用的:

DATA= 指定做报表的数据集

PROMPT= PROMPT模式

NOWINDOWS= 不输出到结果

REPORT = 指定一个存储的报表来生成新报表

OUTREPT= 指定新路径来存放报表

OUT= 建立新数据集

HEADLINE 在报表变量标题和内容间生成一个水平分隔线

HEADSKIP 在报表变量标题和内容间生成一行空格

2 先生成一个基本的报表

先生成数据:

data mnthly_sales;

length zip $ 5 cty $ 8 var $ 10;

input zip $ cty $ var $ sales;

label zip="Zip Code"

cty="County"

var="Variety"

sales="Monthly Sales";

datalines;

52423 Scott Merlot 186.

52423 Scott Chardonnay 156.61

52423 Scott Zinfandel 35.5

52423 Scott Merlot 55.3

52388 Scott Merlot 122.89

52388 Scott Chardonnay 78.22

52388 Scott Zinfandel 15.4

52200 Adams Merlot 385.51

52200 Adams Chardonnay 246

52200 Adams Zinfandel 151.1

52200 Adams Chardonnay 76.24

52199 Adams Merlot 233.03

52199 Adams Chardonnay 185.22

52199 Adams Zinfandel 95.84

;

run;

Proc Report生成最基本的报表:

proc report data=mnthly_sales

headline headskip ;

title1 "Simple Report";

column cty zip var sales;

define cty / display width=6 'County/Name';

define zip / display;

define var / display;

define sales / display format=6.2 width=10;

run;

这里的define后面的’/’,其后面有很多选项来对变量格式,输出方式等进行设置,其选项如下:

GROUP:分组显示

DISPLAY:一般显示

ANALYSIS:其值用于计算或统计

ORDER:按其值排序显示

ACROSS:交叉显示

COMPUTED:其值在compute块里计算得到

结果:

[img]http://dl.iteye.com/upload/attachment/144129/1a74175c-5b06-35fb-9f62-d4a798511cc2.jpg[/img]

3 使用order,按指定变量名排序显示

proc report data=mnthly_sales

headline headskip ;

title1 "Simple Report";

column cty zip var sales;

define cty / order width=6 'County/Name';

define zip / display;

define var / display;

define sales / display format=6.2 width=10;

run;

结果:

[img]http://dl.iteye.com/upload/attachment/144131/f0837969-e936-3f9e-b337-d9fd2b2a0d50.jpg[/img]

4 group分组显示

proc report data=mnthly_sales nofs

headline headskip ;

title1 "Simple Report";

column cty zip var sales;

define cty / group width=6 'County/Name';

define zip / group;

define var / group order=freq descending;

define sales / display format=6.2 width=10;

run;

结果:

[img]http://dl.iteye.com/upload/attachment/144135/40c4cd7e-fd7c-3a4e-aef8-52f3b213b927.jpg[/img]

5 analysis,统计量求和

proc report data=mnthly_sales nofs

headline headskip ;

title1 "Simple Report";

column cty zip sales;

define cty / group width=6 'County/Name';

define zip / group;

define sales / analysis sum format=6.2 width=10;

run;

结果:

[img]http://dl.iteye.com/upload/attachment/144137/2d5313e5-23b1-30fd-828c-96c89f9610ea.jpg[/img]

6 求多个统计量

proc report data=mnthly_sales nofs

headline headskip ;

title1 "Simple Report";

column cty zip sales sales=mean_sales;

define cty / group width=6 'County/Name';

define zip / group;

define sales / analysis sum format=6.2 width=10 'sum';

define mean_sales / analysis mean format=6.2 width=10 'Mean of/Sales';

run;

结果:

[img]http://dl.iteye.com/upload/attachment/144139/48488652-ea45-39ce-bf92-1ea5b00a8bc7.jpg[/img]

7 如果你想让某变量的每一个值都作为一列,那就要用到across。这里要注意的是,有across选项的var,在column时后面加了一个’,’,从而将其后面的变量的数据直接放到across变量下。。

proc report data=mnthly_sales nofs headline headskip;

title1 "Cross Tab Report (Across Type)";

column cty zip var,sales;

define cty / group width=6 'County/Name';

define zip / group;

define var / across order=freq descending '- Grape Variety -';

define sales / analysis sum format=6.2 width=10 'Revenue';

run;

结果:

[img]http://dl.iteye.com/upload/attachment/144141/8576b5c6-f536-31fe-8c01-45301cf7d98c.jpg[/img]

这里,变量variety的每一个值都成为了新的列

8 BREAK与RBREAK,对分组后的报表汇总

proc report data=mnthly_sales nofs headline headskip;

title1 "Report with Breaks";

column cty zip var,sales;

define cty / group width=6 'County/Name';

define zip / group;

define var / across order=freq descending '- Grape Variety -';

define sales / analysis sum format=6.2 width=10 'Revenue';

break after cty / ol skip summarize suppress;

rbreak after / dol skip summarize;

run;

结果:

[img]http://dl.iteye.com/upload/attachment/144147/14a15380-fcfb-3a28-819b-239803e4c1ab.bmp[/img]

这里说明一下BREAK与RBREAK后面的选项:

OL 汇总上方加一条线

DOL汇总上方加两条线

UL汇总下方加一条线

DUL 汇总下方加两条线

summarize 对每组进行汇总

skip 加入一空白行

suppress 在汇总行不显示组名

9 compute块,计算统计变量,这个以后将专门介绍

proc report data=mnthly_sales nofs headline headskip;

title1 "Report with Row Sums (Computed Type)";

column cty zip var,sales row_sum;

define cty / group width=6 'County/Name';

define zip / group;

define var / across order=freq descending '- Grape Variety -';

define sales / analysis sum format=6.2 width=10 'Revenue';

define row_sum / computed format=comma10.2 'Total';

break after cty / ol skip summarize suppress;

rbreak after / dol skip summarize;

compute row_sum;

row_sum = sum(_C3_,_C4_,_C5_,_C6_,_C7_,_C8_);

endcompute;

run;

结果:

[img]http://dl.iteye.com/upload/attachment/144149/50b919be-4036-35ac-b9df-3ce7c4f0a31b.jpg[/img]

Compute块是以compute开始,endcompute为结尾,可以计算出很多复杂的数据。这里的_C*_表示第几列的变量,例如_C3_表示第三列,_C#_代表最后一行。这里的_C7_和_C8_是多余的,但不影响结果。

10 proc report与ODS,以后会详细介绍。这里用ODS输出report过程结果,方法很简单,就是将上面的report代码放入ods语句之间。

ods listing close;

ods rtf file = ‘c:\sugi30.rtf’;

上面的proc report过程代码放在这里就行

ods rtf close;

即:

ods listing close;

ods rtf file = 'c:\sugi30.rtf';

proc report data=mnthly_sales nofs headline headskip;

title1 "Report with Row Sums (Computed Type)";

column cty zip var,sales row_sum;

define cty / group width=6 'County/Name';

define zip / group;

define var / across order=freq descending '- Grape Variety -';

define sales / analysis sum format=6.2 width=10 'Revenue';

define row_sum / computed format=comma10.2 'Total';

break after cty / ol skip summarize suppress;

rbreak after / dol skip summarize;

compute row_sum;

row_sum = sum(_C3_,_C4_,_C5_,_C6_,_C7_,_C8_);

endcompute;

run;

ods rtf close;

结果:

[img]http://dl.iteye.com/upload/attachment/144151/82b071f8-c0d7-33c8-aef3-1ca386b307e5.jpg[/img]
11 report设置style,让报表更炫一点。这个以后也会详细介绍

ods listing close;

ods rtf file = 'c:\sugi30.rtf';

proc report data=mnthly_sales nofs headline headskip

style(header)={background=lightskyblue foreground=black}

style(column)={background=lightcyan foreground=black};

title1 "Report with Row Sums (Computed Type)";

column cty zip var,sales row_sum;

define cty / group width=6 'County/Name';

define zip / group;

define var / across order=freq descending '- Grape Variety -';

define sales / analysis sum format=6.2 width=10 'Revenue';

define row_sum / computed format=comma10.2 'Total';

break after cty / ol skip summarize suppress;

rbreak after / dol skip summarize;

compute row_sum;

row_sum = sum(_C3_,_C4_,_C5_,_C6_,_C7_,_C8_);

endcompute;

run;

ods rtf close;

结果:

[img]http://dl.iteye.com/upload/attachment/144153/f34e8d7b-69cd-3263-83e2-1164a8576e48.jpg[/img]

PROC REPORT基础相关推荐

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

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

  2. PROC REPORT ADVANCE

    我用一个例子来分享下ADVANCE REPORT 我们一般用PROC REPORT 是为了与ODS一起用,做出符合要求的RTF格式的LISTING,比如,要做出如下表格: 首先,你得做出符合要求的数据 ...

  3. SAS|proc report

    PROC REPORT 制表输出统计量 输出具体观测 一般格式; proc report data=数据集 <option>;column 变量;define 变量/options;bre ...

  4. SAS PROC SQL基础操作语句

    SAS OnDemand for Academics ​​​​ CREATE 创建表 PROC SQL; CREATE TABLE AUTHOR (AUTHOR_NO INTEGER Primary ...

  5. oracle proc 定义宿主,oracle proc 编程基础及最小化案例

    oracle proc 编程是在我的概念中是非常陌生的,学习了一天下来发现这东西真的好古老,但是依然健壮.稳定,其中间是编辑一个 .pc 的文件使用 proc 进行预处理,预处理后生成一个真正的.c文 ...

  6. sas proc sql 基础入门 (原创作品,转载请注明出处 )

    /*结构*/ /* PROC SQL;  SELECT column(s)  FROM table(s) | view(s)  WHERE expression  GROUP BY column(s) ...

  7. 思达报表工具Style Report基础教程—用选择列表,选择树进行数据过滤

    2019独角兽企业重金招聘Python工程师标准>>> 教程视频:http://v.youku.com/v_show/id_XOTIyMTA1NDU2.html 当一个报表包含大量的 ...

  8. 思达报表工具Style Report基础教程—创建一个多数据块的联合(Union)、镜像(Mirror)...

    教程视频:http://v.youku.com/v_show/id_XOTAwNzcyMjY0.html 一.创建一个多数据块的联合(Union) 1)通过点击'新建工作表'按钮,创建一个新的工作表 ...

  9. 思达报表工具Style Report基础教程—创建一个多数据块的联合Union、镜像Mirro

    2019独角兽企业重金招聘Python工程师标准>>> 教程视频:http://v.youku.com/v_show/id_XOTAwNzcyMjY0.html 一.创建一个多数据块 ...

最新文章

  1. Query Specific Fusion for Image Retrival 学习日常
  2. nginx重写rewrite的[emerg] unknown directive
  3. RegExp:正则表达式对象 || Global对象
  4. 手把手教你安卓入门(一)
  5. 深圳php和java,深圳java技术培训学习(Java和PHP区别)
  6. Arduino笔记-9110风扇模块的使用
  7. 电子计算机解锁,全电子计算机联锁系统信号解锁模块的研究
  8. python计算两个数的最大公约数和最小公倍数
  9. Wowza服务器系列(4):使用rtmp协议向wowza推流的wowoza配置方法
  10. MotoSimEG-VRC软件:安川机器人摆动焊接虚拟仿真操作方法
  11. 基于VRML的虚拟校园漫游系统
  12. 计算机主板知识,电脑主板知识:主板板型、接口、做工与选购详解
  13. CprimePlus 函数2
  14. dubbo环境的简单搭建
  15. 如何将旧手机soul聊天记录导入到新手机中
  16. 高通SDX62平台 MBIM搜网、查询信号等功能异常
  17. 物理隔离网闸——入门篇(2)
  18. python人机对战_【人机对战】用python打造经典井字游戏
  19. 虚拟化技术-Qemu-KVM
  20. 【Tensorflow】op的理解和自定义损失函数

热门文章

  1. 【Android】 Gson的引用 / 插件GsonFormat / 使用 / GsonFormat解析Json的方法和使用
  2. win10控制面板里没java_win10安装java以及java配置遇到的坑
  3. 【angularjs】利用时间控件进行时间筛选
  4. DBCP 数据库连接池的实现
  5. 语义分析的一些方法(三) 图像语义分析
  6. 2.1数据处理安全:文件加密
  7. 换个花样玩C++(8)吃不透内存布局,坑的是自己,万字经验告诉你类的内存布局
  8. informix笔记
  9. 键盘按键的键码值(全)
  10. JDK1.1源码学习之官方文档与代码结构