SAS学习系列02 输出数据报表.docx

上传人:b****8 文档编号:23608714 上传时间:2023-05-19 格式:DOCX 页数:15 大小:198.40KB
下载 相关 举报
SAS学习系列02 输出数据报表.docx_第1页
第1页 / 共15页
SAS学习系列02 输出数据报表.docx_第2页
第2页 / 共15页
SAS学习系列02 输出数据报表.docx_第3页
第3页 / 共15页
SAS学习系列02 输出数据报表.docx_第4页
第4页 / 共15页
SAS学习系列02 输出数据报表.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

SAS学习系列02 输出数据报表.docx

《SAS学习系列02 输出数据报表.docx》由会员分享,可在线阅读,更多相关《SAS学习系列02 输出数据报表.docx(15页珍藏版)》请在冰豆网上搜索。

SAS学习系列02 输出数据报表.docx

SAS学习系列02输出数据报表

02.输出数据报表

利用SAS数据集,可以用PROCPRINT过程步根据需要输出各种满足一定条件的报表。

一、直接输出

语法:

procprintdata=数据集;

run;

注:

此时(不加任何参数),默认

(1)输出数据集中的所有观测值和变量;

(2)报表最左侧增加一列观测值计数列“[Obs]列”;

(3)报表中变量出现的顺序与数据集中位置相同。

(4)若要双倍行距输出报表,可以在数据集后面加上可选参数:

“double”.

例1输出路径'D:

\我的文档\MySASFiles\9.3'下的SAS数据集therapy.

代码:

libnamepatients'D:

\我的文档\MySASFiles\9.3';

procprintdata=patients.therapy;/*注意数据集前加上data=否则报错*/

run;

运行结果(部分):

二、选择变量和输出顺序

语法:

procprintdata=数据集;

var变量1变量2…;

run;

注:

(1)若不输出观测值计数列[Obs],需加上参数noobs;

(2)若要指定某列或某几列代替“[Obs]列”,可用

id变量1变量2…

注意:

若一个变量既是var变量又是id变量,将输出两次。

例2

(1)输出原始数据集sasuser.admit

(2)只输出变量ageheightweightfee

代码:

procprintdata=sasuser.admitnoobs;

run;

procprintdata=sasuser.admit;

varAgeHeightWeightFee;

idIDName;

run;

运行结果(部分):

三、选择部分观测值

语法:

procprintdata=数据集;

where条件语句

run;

表示选择满足某条件的观测值。

注意,where语句可以指定数据集中任何变量,而不受var语句的限制。

条件语句可以由各种SAS算符和括号组合而成,为此下面介绍一点SAS中的比较、逻辑算符:

符号

含义

示例

=或eq

等于

wherename='Jones,C.';

^=或ne

不等于

wheretemp^=212;

>或gt

大于

whereincome>20000;

<或lt

小于

wherepartno<"BG05";

>=或ge

大于等于

whereid>='1543';

<=或le

小于等于

wherepulse<=85

contains或?

包含

wherefirstnamecontains'Jon';

in

属于

whereactlevelin('LOW','MOD');

wherefeein(124.80,178.20);

and

whereage<=55andpulse>75;

or

wherearea='A'orregion='S';

例3输出数据集Sasuser.admit中满足条件Age>30并且Height>65的观测值,只输出变量AgeHeightWeightFee.

代码:

procprintdata=sasuser.admit;

varAgeHeightWeightFee;

whereAge>30andHeight>65;

run;

运行结果(部分):

四、对数据进行排序

语法:

procsortdata=数据集out=新数据集;

by变量1变量2…;

run;

注:

(1)省略“out=新数据集”,原数据集将被排好序的数据集替换;

(2)“”为可选参数(递减排序),只对紧随其后变量起作用;默认是递增排序;

(3)先按变量1排序,变量1相同,再按变量2排序…

(4)缺省值,当成最小的值。

例4对数据集Sasuser.admit按照Weight递减,Age递增排序,将排序好的数据存为临时数据集work.wgtadmit.并输出Age>30的观测值,可选变量为WeightAgeHeightFee.

代码:

procsortdata=Sasuser.admitout=work.wgtadmit;

bydescendingWeightAge;

run;

procprintdata=work.wgtadmit;

varWeightAgeHeightFee;

whereAge>30;

run;

运行结果(部分):

五、对数值变量生成按列汇总

1.语法:

procprintdata=数据集;

sum变量1变量2…;

run;

注:

列的汇总,出现在最后一行,格式与变量列相同。

例5输出数据集Sasuser.insure中满足条件Pctinsured<80的观测值,对Balancedue列作汇总,只输出变量NamePolicyBalancedue.

代码:

procprintdata=Sasuser.insure;

varNamePolicyBalancedue;

wherePctinsured<80;

sumBalancedue;

run;

运行结果:

2.若要分组汇总,可以用by和sum组合来实现。

语法:

sum变量1变量2…;

by变量1…;

注:

(1)需要对数据集进行“分组”处理时,可以用by语句,但要求数据集事先必须已经按by变量排好序了;(另一个“分组”处理语句是class,不要求数据集事先按class变量排序,按class变量的不同值进行分类计算和分析)

(2)notsorted选项的作用就是告诉SAS:

数据不是按照字母或者数字大小排序的,而是按照by变量的值按组排列的;

(3)输出结果根据by变量不同的值,分成多个报表。

例6对数据集Sasuser.admit按Actlevel分组分别对各组的Fee进行汇总。

代码:

procsortdata=Sasuser.admitout=work.activity;

byActlevel;

run;

procprintdata=work.activity;

varAgeHeightWeightFee;

whereAge>40;

sumFee;

byActlevel;

run;

运行结果:

若要以更紧凑直观的报表输出(用分组变量列代替[Obs]列),可以再加一个id语句,改写例6的代码如下:

代码:

procsortdata=Sasuser.admitout=work.activity;

byActlevel;

run;

procprintdata=work.activity;

varAgeHeightWeightFee;

whereAge>40;

sumFee;

byActlevel;

idActlevel;

run;

运行结果:

若在每页输出一个报表,可以加上“pagebyactlevel;”。

六、设置报表的标题和脚注

语法:

title‘标题名’;

footnote'脚注名';

注:

(1)默认的标题是“SAS系统”(居中),默认无脚注;

(2)可选参数n,用来指定标题/脚注所在的行(title=title1);

(3)title和footnote是全局命令,除非重新定义新的title和footnote或者结束当前SAS会话,否则将对后面的输出始终有效(取消前面的title,可以只用tilte关键词后面不加标题名)。

例7设置标题和脚注的例(无title2,会空出第2行).

代码:

title1'HeartRatesforPatientswith';

title3'IncreasedStressToleranceLevels';

footnote1'DatafromTreadmillTests';

footnote3'1stQuarterAdmissions';

procprintdata=Sasuser.stress;

varresthrmaxhrrechr;

wheretolerance='I';

run;

运行结果:

七、为变量指定描述性标签

数据集的变量名可能是简写或略写,表义并不明确,可以用label命令重新指定变量标签。

语法:

procprintdata=数据集label;

label变量1=‘变量标签1’变量2=‘变量标签2’…;

run;

注:

数据集后面不要忘了加上label.

例8给变量设置描述性标签的例.将变量名height设为HeightinInches,将变量名weight设为WeightinPounds.

代码:

procprintdata=Sasuser.admitlabel;

varactlevelheightweight;

labelactlevel='ActivityLevel'

height='HeightinInches'/*也可以每个标签,都用label命令引出*/

weight='WeightinPounds';

run;

运行结果(部分):

八、为输出变量指定格式

1.日期、数值等都有不同格式,可以根据需要指定。

语法:

procprintdata=数据集;

format变量1格式1变量2格式2…;

run;

常用变量格式列表:

格式语句

含义

示例

w.

整数值共占w位,无小数位

5678

w.d

数值共占w位,d位小数

5678.90

$w.

字符值共占w位,无小数位

char

DATE7.

日期值共占7位,无小数位

16OCT99

DATE9.

日期值共占9位,无小数位

16OCT1999

MMDDYY8.

月日年共占8位,无小数位

06/05/03

MMDDYY10.

月日年共占10位,无小数位

09/12/1997

COMMAw.d

逗号表示数值,共占w位,d位小数

5,678.90

DOLLARw.d

“美元号+数值”共占w位,d位小数

$38,245.40

注:

(1)若指定的总位数w不够,SAS系统将自动按“最优选择”输出,例如,同样是“38245.3975美元”,

DOLLAR12.2输出$38,245.40;

DOLLAR9.2输出$38245.40

DOLLAR8.2输出38245.40

(2)SAS中的日期变量是按数值存储的,从01/01/1960开始计数,即0=01/01/1960,1=01/02/1960…….

(3)在proc步中指定的label和format只是临时指定,只对当前程序步起作用。

若要永久的指定label和format,可以在data步中使用label和forma命令;

(4)也可以自己定义格式来使用,例如:

procformat;

value$repfmt

'TFB'='Bynum'

'MDC'='Crowley'

'WKK'='King';

run;

procprintdata=vcrsales;

varsalesreptypeunitsold;

formatsalesrep$repfmt.;

run;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1