第四章 排序实蓬、打印并描述你的數(shù)據(jù)
4.1使用SAS過(guò)程步
使用過(guò)程步就像填寫一個(gè)如左圖的表格,當(dāng)然每個(gè)過(guò)程步都有獨(dú)特的地方橄浓,本部分主要討論各過(guò)程步相同的地方:
大部分過(guò)程步都有一個(gè)必須的語(yǔ)句幌陕,也有可選的語(yǔ)句,比如打印語(yǔ)句:proc print佩伤,這兩個(gè)詞是必須的聊倔,但可選的語(yǔ)句也有很多。
Proc語(yǔ)句所有的語(yǔ)句的必須部分為proc+過(guò)程名生巡,比如print耙蔑、contents等。后面接一些可選項(xiàng)孤荣。比如proc print data=banana甸陌;
data=banana選項(xiàng)告訴SAS打印哪個(gè)文件,如果不加垃环,則SAS默認(rèn)打印最近使用的數(shù)據(jù)邀层。前面還可以家l ibname語(yǔ)句返敬,建立一個(gè)對(duì)本地文件的鏈接(2.20)遂庄,比如:
LIBNAME tropi cal 'c:\MySASLi b';
PROC CONTENTS DATA=tropi cal .banana;
或者直接引用(2.21):PROC CONTENTS DATA='c:\MySASLi b\banana';
BY語(yǔ)句BY語(yǔ)句只在過(guò)程proc sort中是必須的,它用來(lái)對(duì)觀測(cè)值排序劲赠。其他過(guò)程BY告訴過(guò)程對(duì)變量進(jìn)行分別分析涛目,且是可選的。比如要對(duì)每個(gè)州進(jìn)行分別分析凛澎,則為:BY State
另外霹肝,除了proc sort,其他過(guò)程都假設(shè)了數(shù)據(jù)已經(jīng)進(jìn)行了排序塑煎,所以如果數(shù)據(jù)還沒(méi)有排序沫换,那么在分析之前要用proc sort排序。
TITLE和FOOTNOTE語(yǔ)句這是為輸出加上標(biāo)題和腳注最铁。最基本的title語(yǔ)句為:title ‘標(biāo)題’讯赏,雙引號(hào)、單引號(hào)皆可冷尉,比如:
TITLE'Thi s i s a ti tl e';
如果標(biāo)題中帶有撇號(hào)漱挎,則需用雙引號(hào),或者將撇號(hào)換為雙撇號(hào):
TITLE”Here’s another ti tl e”;
TITLE’Here’’s another ti tl e’;
可以通過(guò)在ti le雀哨、footnote后面加上數(shù)字來(lái)添加多個(gè)標(biāo)題和腳注磕谅,
FOOTNOTE3’Thi s i s the thi rd footnote’;
但是小數(shù)字的標(biāo)題會(huì)代替大數(shù)字的標(biāo)題,如ti tle2會(huì)代替title3雾棺。
標(biāo)題的去處可以用ti tle+空值:TITLE;
Label語(yǔ)句它可以為輸出的變量加上標(biāo)簽膊夹,一個(gè)標(biāo)簽最大256字節(jié),下面的代碼為
receivedate和shipdate創(chuàng)建了標(biāo)簽:
LABEL Recei veDate=’Date order was recei ved’
Shi pDate=’Date merchandi se was shi pped’;
注意的是捌浩,在數(shù)據(jù)步中使用label語(yǔ)句割疾,則標(biāo)簽會(huì)保存在數(shù)據(jù)集中;在過(guò)程步中使用嘉栓,標(biāo)簽只在這個(gè)過(guò)程中有效宏榕。
定制輸出使用系統(tǒng)選項(xiàng)拓诸,可以為輸出設(shè)置諸如居中、日期麻昼、單行長(zhǎng)度奠支、頁(yè)長(zhǎng)度等。使用Output Delivery System抚芦,還可以改變輸出的風(fēng)格倍谜,以不同的格式輸出(HTML、RTF)叉抡,甚至改變輸出的任何細(xì)節(jié)尔崔。
輸出數(shù)據(jù)集可以用ODS OUTPUT語(yǔ)句為輸出結(jié)果創(chuàng)立一個(gè)數(shù)據(jù)集(5.3),一些過(guò)程中也可以用out=option褥民。
4.2用where語(yǔ)句在過(guò)程中構(gòu)造子集
也可以用where構(gòu)造子集季春,它方便快捷,因?yàn)樗粍?chuàng)建新的數(shù)據(jù)集消返。且能夠用在過(guò)程步中载弄。
Where語(yǔ)句的基本形式為:
WHERE condi ti on;
只有滿足條件的觀測(cè)值才進(jìn)行proc過(guò)程。一些使用最多的操作符及例子:
輸出結(jié)果為:
4.3用proc sort為數(shù)據(jù)排序
基本形式為:
PROC SORT;
BY vari abl e-1...vari abl e-n;
SAS首先會(huì)按照第一個(gè)變量排序撵颊,再對(duì)后面的排序宇攻。
Data=,out=用來(lái)指定輸入和輸出數(shù)據(jù)倡勇,如果缺失out=逞刷,則SAS會(huì)將排序后的數(shù)據(jù)集代替原
來(lái)的數(shù)據(jù)集。下面的代碼告訴SAS對(duì)數(shù)據(jù)messy排序妻熊,并將排序后的數(shù)據(jù)存在neat中:
PROC SORT DATA=messy OUT=neat;
選項(xiàng)nodupkey告訴SAS排序時(shí)刪除重復(fù)值夸浅,比如:
PROC SORT DATA=messy OUT=neat NODUPKEY;
SAS默認(rèn)是升序,可以用選項(xiàng)DESCENDING來(lái)變成降序固耘,將DESCENDING加在要降序的變量
前面:
BY State DESCENDING Ci ty;
例子下面的數(shù)據(jù)顯示了一些鯨魚和鯊魚品種的平均長(zhǎng)度: