4.4 用proc print打印你的數(shù)據(jù)
基本形式:PROC PRINT;
SAS默認打印最近使用的數(shù)據(jù)集疚顷,DATA=可以指定數(shù)據(jù)集:
PROC PRINT DATA=data-set;
SAS默認打印觀測值數(shù)襟诸,noobs選項可以取消。SAS默認打印時用變量標簽代替變量爽哎,用label可以改變?nèi)∠?/p>
PROC PRINT DATA=data-set NOOBS LABEL;
還有下面的選項:
BY variable-list; 前提是數(shù)據(jù)必須進行排序
ID variable-list;
SUM variable-list; 打印變量總數(shù)
VAR variable-list; 指定打印哪部分變量以及打印順序姐帚,默認打印全部渣窜。
例子 有學生賣糖果的數(shù)據(jù)铺根,Candy.dat,記錄學生名乔宿、所屬班級位迂、銷售日期、賣的糖果類型予颤、賣出的糖果數(shù)囤官。
下面的程序讀取數(shù)據(jù)、計算每個學生賺得的利潤(每買一塊賺1.25美元)蛤虐,并用proc sort按班級排序党饮。接著在proc print語句中加入by,以分班級打印驳庭,加入sum刑顺,計算每個班級總利潤:
輸出結(jié)果為:
4.5 用formats改變打印外觀
打印數(shù)據(jù)時,SAS會自動為你安排最好的格式饲常,小數(shù)點位數(shù)蹲堂、空格等。
當不需要默認格式時贝淤,可以用SAS formats改變打印的外觀柒竞。
對于字符串、數(shù)值播聪、日期變量朽基,SAS有很多格式布隔。比如可以用commaw.d格式打印有逗號的數(shù)字,用$w.格式控制打印的字符串數(shù)稼虎,用MMDDYYw.格式將日期(以1960.1.1為基點的數(shù)字)打印成12/03/2003這樣的格式衅檀。甚至可以將格式打印成十六進制、區(qū)位十進制霎俩、壓縮十進制等哀军。
SAS格式的普通形式為:
符號說明:$說明了是字符串、format是格式名打却、w是包括包括在小數(shù)點在內(nèi)的長度杉适、d是小數(shù)位數(shù)。句號非常重要柳击,它用來區(qū)分格式名和變量名淘衙。
Format語句 可以用format語句同時將格式和變量聯(lián)系起來,用format+變量名+格式名腻暮,比如想要將格式DOLLAR8.2和變量profit、loss聯(lián)系起來毯侦,把格式MMDDYY8.和格變量saledate聯(lián)系起來:
FORMAT Profit Loss DOLLAR8.2 SaleDate MMDDYY8.;
Format可以用在數(shù)據(jù)步和過程步中哭靖,前者將把格式永久儲存,后者只是臨時儲存侈离。
Put語句 當寫原始數(shù)據(jù)或者報告時试幽,也可以在put語句中使用formats,在每個變量后面加上格式:
PUT Profit DOLLAR8.2 Loss DOLLAR8.2 SaleDate MMDDYY8.;
例子 在上面的學生賣糖果的案例中卦碾,可以看到輸出的日期是SAS日期值铺坞,這里用format變換成日期格式,并且用DOLLAR6.2將利潤換成貨幣格式洲胖,
輸出結(jié)果為:
4.6 可供選擇的formats
下面是例子
4.7 使用proc format創(chuàng)建自己的格式
有時候變量值用數(shù)字代表實際的變量值济榨,比如1代表男性,2代表女性绿映,這種代碼在打印的時候不好解讀擒滑,可以用proc format使得打印出想要的值。
基本形式為:
Value語句中的name是格式的名字叉弦,如果格式是位字符串設(shè)計丐一,則必須以$開頭,長度不能超過32個字節(jié)(包括$)淹冰,不能以數(shù)字結(jié)尾库车,除了下劃線,不能包含其他任何特殊符號樱拴。且名字不能與已有的格式名沖突柠衍。Range是分配給等號右邊文本的變量值洋满,文本可以達到32767個字節(jié),有的過程只會打印前面8或16個字節(jié)拧略。下面是一個例子:
變量值是字符串要加上引號芦岂,range不止一個值要用逗號隔開,連續(xù)的range要用-垫蛆,關(guān)鍵字low和high可以用來指代變量中最小和最大的的非缺失值禽最。也可以用<來排除或指代某些范圍,other可以給任何沒有列在value語句中的變量分配格式袱饭。
例子 有一份關(guān)于汽車公司客戶的調(diào)查信息川无。包括客戶年齡、性別(1為男性虑乖,2為女性)懦趋、每年收入、偏愛的汽車顏色(yellow,gray,blue,or white):
下面的代碼讀取數(shù)據(jù)疹味,并使用format過程為顏色仅叫、性別和汽車創(chuàng)建格式,并在打印數(shù)據(jù)時用format為變量指定這些輸出格式:
輸出結(jié)果為:
4.8 定制一個簡單的報告
數(shù)據(jù)步可以幫助在報告中完成一些個性的需求糙捺,比如一頁打印一個觀測值等诫咱。
用file語句和put語句 ,基本形式為:
FILE‘file-specification’PRINT;
如input洪灯,put語句也有l(wèi)ist坎缭,column,formatted方式签钩,但因為SAS已經(jīng)知道變量類型掏呼,因此不用符號$。且如果使用list 铅檩,SAS會自動在兩個變量之間加上空格憎夷;使用column或者formatted,SAS將會把變量放在任何你指定的地方昧旨。使用指示器@n指定移動到第n列岭接,+n指定移動n列,/跳動到下一行臼予,#n跳動到第n行鸣戴。用@hold住當前行。
例子 再一次使用學生賣糖果的案例粘拾,Candy.dat窄锅,記錄學生名、所屬班級、銷售日期入偷、賣的糖果類型追驴、賣出的糖果數(shù)。
老師想看每位學生的銷售情況疏之,故要每頁分別打印一位學生的情況殿雪,代碼如下:
Data null是告訴SAS不要寫數(shù)據(jù)集名,以便使得程序更快锋爪。File語句創(chuàng)建了一個輸出文件丙曙,空標題title語句告訴SAS去除所有的自動標題。
第一個put語句以一個指示器開頭其骄,@5亏镰,告訴SAS移動到第5列,接著打印出“candy sales report for”拯爽,后面是姓名name索抓。變量name、class和quantity都是以list方式打印毯炮,而profit
是使用formatted方式打印逼肯,并給定格式dollar6.2。一個斜杠是指跳到下一行桃煎,兩個斜杠是跳到下兩行汉矿。最后,語句put_age_是在每個學生報告下面插上頁碼备禀,程序運行后,日志說明如下:
前三頁報告如下:
4.9 使用proc means描述數(shù)據(jù)
可以用proc mens查看一些簡單的統(tǒng)計量奈揍,Means過程開始于關(guān)鍵詞proc means曲尸,后面接需要打印的統(tǒng)計量,基本形式:
PROC MEANS options;
如果不加選項男翰,則默認打印出非缺失值個數(shù)另患、均值、標準差蛾绎、以及最大最小值昆箕,下面是用選項可以查看的統(tǒng)計量:
如果沒有其他語句,proc means語句會給你數(shù)據(jù)集中所有觀測值和所有數(shù)值變量的統(tǒng)計量租冠,這里是一些可以用到的語句:
? BY variable-list; 分變量單獨分析鹏倘,但數(shù)據(jù)必須先按照variable-list的變量順序排序(proc sort)。
? CLASS variable-list; 也是分變量單獨分析顽爹,看起來會更集中一些纤泵,且不需要排序。
? VAR variable-list; 指定分析中使用哪種數(shù)值變量镜粤,默認則使用所有的數(shù)值變量捏题。
例子 有一個花朵銷售的數(shù)據(jù)玻褪,F(xiàn)lowers.dat,包括顧客ID公荧,銷售日期带射,petunias,snapdragons循狰,
marigolds三種花的銷售量:
下面的代碼讀取數(shù)據(jù)窟社,計算新變量銷售月份,month晤揣,并使用proc sort按照月份排序桥爽,并使用proc means的by語句來按照月份描述數(shù)據(jù):
輸出結(jié)果為:
4.10 將描述性統(tǒng)計寫入SAS數(shù)據(jù)集中
有兩種方法可以在SAS數(shù)據(jù)集中儲存描述性統(tǒng)計量,Output Delivery System(ODS)昧识,或者output語句钠四。前者在5.3,后者的基本形式為:
OUTPUT OUT=data-set output-statistic-list;
Data-set是要儲存結(jié)果的數(shù)據(jù)集名跪楞,output-statistic-list則界定需要保存哪些統(tǒng)計量和名稱缀去,可能的形式為:
statistic(variable-list)=name-list
statistic可能是proc means語句中的任何一種統(tǒng)計量(sum,n甸祭,mean…)缕碎,variable-list則界定VAR語句中哪些變量需要輸出,name-list則定義統(tǒng)計量的新名字池户。比如咏雌,proc means語句產(chǎn)生了一個數(shù)據(jù)集ZOOSUM,包括一個觀測值和變量lionweight(the mean of the lions’weights)校焦,BearWeight(the mean of the bears’weights)赊抖。
Noprint是告訴SAS不需要產(chǎn)生任何打印結(jié)果,因為已經(jīng)將結(jié)果存入數(shù)據(jù)集中寨典。
例子 仍然是花朵銷售的數(shù)據(jù)
要描述數(shù)據(jù)氛雪,每個顧客只有一個觀測值,包括SUM和MEAN耸成,并且將結(jié)果儲存到數(shù)據(jù)集中以便日后分析报亩。下面的程序讀取程序,按照CustomerID排序井氢,使用means過程弦追,結(jié)果存在totals數(shù)據(jù)集中。以原始名Petunia,SnapDragon,and Marigold給出sum花竞,以新變量名MeanPetunia,MeanSnapDragon,and MeanMarigold給出mean
結(jié)果如下: