SAS講義 第十七課使用列表報告PROC PRINT和匯總報告PROC TABULATE_第1頁
SAS講義 第十七課使用列表報告PROC PRINT和匯總報告PROC TABULATE_第2頁
SAS講義 第十七課使用列表報告PROC PRINT和匯總報告PROC TABULATE_第3頁
SAS講義 第十七課使用列表報告PROC PRINT和匯總報告PROC TABULATE_第4頁
SAS講義 第十七課使用列表報告PROC PRINT和匯總報告PROC TABULATE_第5頁
已閱讀5頁,還剩13頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第十七課使用列表報告PROCPRINT和匯總報告PROCTABULATE利用SAS系統提供的各種過程可以制作各種風格的報表。一份好的輸出報表可以使用戶更直觀、更清楚和更容易地了解和明白統計計算的結果,因此如何制作一個能充分揭示運算結果信息和滿足要求的報告,也是非常重要的。SAS系統提供的各種制作報表過程中,最常用的是以下兩種:列表報告PROCPRINT過程匯總報告PROCTABULATE過程一■列表報告PROCPRINT過程所謂列表報告PROCPRINT過程,將輸出SAS數據集中的數值,輸出時把數據集中的每一個變量形成輸出報表的列,而每一個觀測形成輸出報表的一行。1PROCPRINT過程的主要功能PROCPRINT過程輸出的數據列表具體地說主要能夠做到以下幾點:變量的輸出格式用戶可以選擇(Format語句)可在輸出報表中加上標題(Title)和腳注(Footnotes語句)可輸出數據集中變量的任何子集(Where語句)?可以控制變量是否出現以及出現的順序(Var語句)用戶可以自己定制列表頭(Label語句)可分組輸出觀測數據(By語句)可計算所有觀測值或分組觀測值的總和(Sum/Sumby語句)及其它統計量每頁報表的寬度和長度以及每列的寬度都可控制(選項Width=)當數據集中變量太多時,可分成幾部分輸出(選項Rows=)2PROCPRINT過程語句格式在PROCPRINT過程中,常常配合使用了許多其它SAS語句以達到所要求的輸出報表格式,我們把在PROCPRINT過程中常用的一些語句的基本使用格式列出,具體使用時根據需要可能使用其中的幾條語句。如下所示:PROCPRINT <選項列表〉;VAR變量列表;ID變量列表;BY變量列表;PAGEBY變量;SUMBY變量;上海財經大學經濟信息管理系IS/SHUFE.SUM變量列表;TITLEn“標題內容”;FOOTNOTEn“標題內容”;LABEL變量1=“標簽*內容”變量2=“標簽*內容”;FORMAT變量輸出格式;WHERE條件表達式;Run;3PROCPRINT的選項PROCPRINT的選項列表包含許多選項,選項之間以空格分隔,選項沒有先后次序。我們下面列出一些主要選項:DATA^據集名一給出要打印輸出的SAS數據集。如果省略,則為最近建立的SAS數據集。N——求在輸出這個數據集的數據列表之后,同時輸出觀測的總輸出條數。如果使用了BY分組語句,在每一個分組后輸出各個分組輸出觀測的條數。LABEL或L——用變量的標簽作為輸出數據列表中每列的抬頭。如果變量沒有定義標簽,則用變量名作為列抬頭。SPLIT或S='分隔符'一規定一個字符(如*號或#號)用于將較長的標簽分隔成幾行。在這個選項里定義了某個分隔符以后,過程中的LABEL語句里就可以使用這個分隔符了。另外選項SPLIT=ffLABEL不必同時使用。NOOBS——不輸出觀測數據的序號。當不用ID語句且又不要輸出觀測的序號時,可使用該選項。DOUBLE或D——求輸出隔行打印。ROUND或R——對用FORMAT語句規定變量的輸出格式中的小數點位進行四舍五入。HEADING=H或V——規定打印列抬頭的方向。H或HORIZONTAL表示所有列抬頭水平打印,V或VERTICAL表示所有列抬頭垂直打印。WIDTH=FULL或MIN或U或UBY——規定使用什么作為列寬。FULL表示使用變量格式化寬度,MIN或MINIMUM表示使用可能的最小列寬,U或UNIFORM表示對所有頁一致地使用變量格式化寬度,UBY或UNIFORMBY表示在BY組內對所有頁一致地使用變量格式化寬度。ROWS=PAGE—當數據集包含很多變量和觀測時,使用此選項將在每一頁中打印盡可能多的觀測,能減少輸出頁數。VAR語句、ID語句和BY語句我們前面已經說明過了,這里不再重復。PAGEBY語句要求和BY語句一起使用,當PAGEBY變量的值改變或者在BY語句中列在PAGEBY變量前的BY變量值改變時,PRINT過程將從新的一頁開始輸出。SUM語句規定計算總和的變量,SUM語句中規定的變量可以沒有列在VAR語句中,PRINT過程將自動把SUM語句中規定的變量加到VAR變量列表中。SUMBY語句必須和BY語句連用,用來對一部分BY組中指定的變量求和。每當SUMBY變量的值變化或者BY語句中列在SUMBY變量前的變量值改變時,PRINT將把對應BY組中的SUM語句中的變量求和。如果沒有規定SUM語句,則將對數據集中BY變量以外的所有數值變量求和。SUMBY語句的本質是通過指定BY變量列表中變量位置而限制BY組中SUM變量求和。4舉例例如,我們要輸出SURVEY數據集的報表。報表之一的要求是:選擇輸出身高小于1.75米的觀測,同時給出滿足條件的總輸出條數,自定義要顯示的變量和順序,不顯示觀測的序號,求和INCOME變量的值,修改BDATE變量和INCOME變量輸出格式,且修改它們的列標題并分兩行顯示,加兩個標題和一個腳注。程序如下:LIBNAMESTUDY“D:\SASDATA\MYDIR”;PROCPRINTdata=study.surveynoobsnsplit二'*'roundwidth二min;VARnamesexincomebdateheighweight;SUMincome;TITLE1“PROCEDUREPRINT”;TITLE2“Dept.ofInformationSystem";FOOTNOTE1-SHANGHAIUNIVERSITYOFFINANCEANDECONOMICS,;LABELBdate="Dateof*Brithday"Income="Total*Income";FORMATBdateDATE7.Incomedollar12.2;WHEREheighv=1.75;Run;程序運行結果見圖17-1所示。**************************-I□岡Filh!Edi+ViGli:?b:ils0^.+ienEWindoTMelp-!□!x|m土aJMslaL^ljdMsHMi-!□!x|UNIVERSITYOFFINANCEANDECONOMirSUNIVERSITYOFFINANCEANDECONOMirSPROCEDUREPRINTDept?口fInf口廠mmti口仃System06:53Tuesday,TotalDateofNAMESEX1nc口IT1EBrithdayHEIGHHEIGHTXIAUER11?12,120.1201JAN801.7151.332HANGSANF01JUL791.G948.18UANGUUM$89,888.88010匚T4T1.7471.01ZHhOLIUF?50,500.0508MAR811.7251.114$187,869.41BoUTFUT-OJiititled)圖17—1用PROCPRINT過程輸出的SURVEY數據集報表之一腳注顯示在一頁的最下方,通常一頁的長度要大于窗口的長度,所以有時正文和腳注的內容并不一定能同時顯示在OUTPUT窗口中。我們可以用Globals/Options/Globaloptions命令,調出Options對話單,修改頁尺寸PAGESIZE參數為17行,然后選擇Options/Savesettingsnow命令保存當前的設置。報表之二的要求是:修改報表一,按SEX變量中的值M和F進行分組求和(用BY語句),同時將分組值M和F列在分組報告的最左邊(用ID語句)。要分組求和,指定數據集中的分組變量值必須事先已經按升序排序好了,如果沒有排序過,常常先用SORT過程對分組變量進行排序。去掉腳注。程序如下:LIBNAME STUDY“D:\SASDATA\MYDIR”;PROCSORTData=study.surveyout=study.bysex;B(y sex;PROCPRINT data=study.bysexnoobsnsplit='*'roundwidth=min;VARnameincomebdateheighweight;IDsex;BYsex;SUMincome;TITLE1“PROCEDUREPRINT”;TITLE2“Dept.ofInformationSystem";FOOTNOTE1;上海財經大學經濟信息管理系IS/SHUFE.

LABELBdate="Dateof*Brithday"Income="Total*Income";FORMATBdateDATE7.Incomedollar12.2;WHEREheigh〈=1.75;Run;程序運行結果見圖17—2所示:圖17—2用PROCPRINT過程輸出的分組求和報表之二在使用了TITLE和FOOTNOTE語句后,所定義的標題和腳注將一直保持有效,直到另一個TITILE或FOOTNOTE語句被執行。我們在程序中用不帶任何內容的FOOTNOTE1語句替代原先同樣號碼的腳注,實際上它能取消擁有更大號碼的腳注。二■匯總報告PROCTABULATE過程當一個SAS數據集包含不太多的數據時,列表報告可以很好地描述數據,但是當數據集包含大量信息時,就需要使用匯總報告了。PROCTABULATE用分類報表的形式輸出滿足用戶要求的描述性統計量。每一個表單元屬于用交叉變量名組成的特殊觀測類。與每一個單元有關的統計量是由該類所有觀測值計算得到的。在通常情況下,產生匯總報表要先將數據根據需要進行分類,然后在分類的基礎上計算一些統計量。**************************PROCTABULATE過程的三要素一個最簡單的PROCTABULATE過程必須定義下列三要素:類變量——可以是數值型變量或字符型變量。分類的目的是為了在每一個類上進行計算和分析。分析變量 一定是數值型變量。可以計算的一些統計量如:頻數(frequency)、均值(mean)、標準差(standarddeviation)、最小值(minimum)、最大值(maximum)>極差(range)、總和(sum)、百分數(percentages)等。表的結構和格式——最多可以定義三個維度:第一維定義列,第二維定義行,第三維定義頁。并且可以通過TABLE語句中的表達式計算統計量,用操作符,如:逗號、空格、星號、圓括號等,來組織單元集合。另外還能格式化單元中的數據值和產生用戶化的行標題和列標題。PROCTABULATE語句格式在PROCTABULATE過程中,常常使用一些控制匯總報表產生的語句,一般過程形式如下:PROCTABULATE〈選項列表〉;CLASS 分類變量列表;VAR 分析變量列表;TABLEvv頁表達式,>行表達式,>列表達式</表選項〉;LABEL 變量1=“標簽*內容”變量2=“標簽*內容”……;KEYLABEL統計量名字1=“標記1”統計量名字2=“標記2”FORMAT 變量輸出格式;WHERE 條件表達式;Run;PROCTABULATE語句總是伴隨著至少一個TABLE語句來規定如何制表。用在TABLE語句的分類變量必須用CLASS語句說明。用在TABLE語句的分析變量必須用VAR語句說明。同時出現在CLASS語句和VAR語句中的變量,只能作為分類變量使用。CLASS、VAR和TABLE語句是構成PROCTABULATE過程最基本的三條語句。PROCTABULATE的選項PROCTABULATE的選項列表包含許多選項,選項之間以空格分隔,幾個主要的選項說明如下:?DATA=^據集名一給出要制表輸出的弘S數據集。如果省略,則為最近建立的

SAS數據集。NOSEPS——求在表體中不出現水平分隔線。FORMCHARV(索引表)>='字符串'——規定用來構造報表輪廓和分隔線的字符。字符串為11個制表字符,用來定義畫垂直和水平線的2個字符,及畫9個角字符:左上、中上、右上、左中、中中(交叉)、右中、左下、中下、右下。缺省值是FORMCHAR='|l+l'o如果要改變邊角線,例如想把4個角換成*,則可使用FORMCHAR(35911)='****',如果FORMCHAR-選項賦了11個空格,則生成沒有邊框和分隔線的報表。MISSING——求把丟失值作為分類變量的有效水平。即匯總時包含分類變量中有丟失值的觀測。4TABLE語句的使用和輸出表格結構如何正確地理解和使用TABLE語句是掌握PROCTABULATE過程的關鍵所在。匯總報表輸出的表格形狀和所計算的統計量都是由TABLE語句中的表達式決定的,這個表達式中包含元素和操作符。元素指分類變量、分析變量和統計量,當表達式包含多個元素時,需要用操作符把它們連接起來。使用不同的操作符連接會產生不同的表格形狀。下面列出一些主要的操作符及其作用:TABLE表達式中的操作符作用逗號 ,轉另一維空格表格并排連接星號 *交叉組合分組園括號 ()分組或規定次序為了便于理解TABLE表達式中操作符的作用,我們舉一個假設的例子來說明。有SAS數據集ABCX,其中有四個變量A、B、C和X,變量A、B、C我們將在PROXTABULATE過程中用CLASS語句定義為分類變量,我們可以理解為它是一個產品的大類A、中類B和小類Co而X變量是一個數值型變量,用VAR定義為分析變量,我們可以理解為它是一個產品的銷售數量或收入金額或價格等。假設的數據集ABCX可能數據值如下表所示:變量名TABLE中的變量類型可能的數據值A分類變量A1,A2B分類變量B1,B2C分類變量C1,C2,C3X分析變量111?223ABCX數據集中的具體觀測值見下表所示:OBSABCX1A1B1C11112A1B1C21123A1B1C31134A1B2C11215A1B2C21226A1B2C31237A2B1C12118A2B1C22129A2B1C321310A2B2C122111A2B2C222212A2B2C3223下面我們給出分析變量X和分類變量A、B、C組成的有效表達式的輸出報表格式。例1:TABLE表達式中只有一個分類變量A,既沒有規定分析變量,也沒有指明統計量,則缺省的統計量為頻數N,即分類變量值的交叉頻數。程序和輸出匯總報表形式如下所示:ProctabulateData=ABCX;ClassA;VarX;TableA;Run;AA1A2NN66例2:使用逗號操作符隔開TABLE語句的兩個表達式將產生一個兩維表格,第一個表達式定義行,第二個表達式定義列。程序和輸出匯總報表形式如下所示:ProctabulateData=ABCX;ClassAB;VarXTableA,B;Run;BB1B2NNA33A1A233上海財經大學經濟信息管理系IS/SHUFE.

例3:使用兩個逗號操作符隔開TABLE語句的三個表達式將產生一個三維表格,第一個表達式定義頁,第二個表達式定義行,第三個表達式定義列。程序和輸出匯總報表形式如下所示: ProctabulateData=ABCX;Class ABC;Var X; TOC\o"1-5"\h\zTable A,B ,C;Run;第一頁AA1CC1C2C3NNNB111B1B2111第二頁AA2CC1C2C3NNNB111B1B2111例4:使用空格操作符隔開TABLE語句的兩個表達式將產生一個連排表格。程序和輸出匯總報表形式如下所示:TOC\o"1-5"\h\zProctabulateData=ABCX;Class A B ;Var X ;Table A B ;Run;ABA1A2B1B2NNNN6666例5:使用星號操作符隔開TABLE語句的兩個表達式將產生一個交叉等級表格。程序和輸出匯總報表形式如下所示:上海財經大學經濟信息管理系IS/SHUFE.TOC\o"1-5"\h\zProctabulateData=ABCX;Class AB ;Var X ;Table A*B ;Run;AA1A2BBB1B2B1B2NNNN3333例6:使用含有園括號、空格和星號操作符的復合表達式。在復合表達式中,交叉操作符星號優于連接操作符空格,但可以使用園括號操作符來改變它們的次序,如(AB)*C表達式相當于A*CB*C。程序和輸出匯總報表形式如下所示:ProctabulateData=ABCX;ClassABC;VarX;Table(AB)*C;Run;ABA1A2B1B2CCCCCCCCCCCCCCCC123123123123NNNNNNNNNNNN2222222222225匯總報告中計算統計量在TABLE語句中使用星號操作符連接分析變量和統計量,如TABLEA*X*MEAN,其中A是分類變量,X是分析變量,MEAN是統計量,則可以對指定的分析變量X計算指定MEAN統計量。在TABLE語句中如果沒有規定分析變量,則N或PCTN(頻數N的百分數)可作為統計量使用,如TABLEA*N或TABLEA*PCTN。如果TABLE語句中規定了分析變量,但沒有指定統計量時,如TABLEA*X,則SUM作為統計量。如果TABLE語句中既

沒有出現分析變量如X,又沒有出現統計量如MEAN,例如上面的例1—6中的TABLE語句都沒有規定分析變量和統計量,如TABLEA語句只規定了分類變量A,則每個表單元將給出分類變量的交叉頻數。在TABLE語句中如果規定了分析變量,則可以要求計算下表所示的一個或幾個統計量。統計量作用N確定的子組中含有有效數據的觀測數NMISS確定的子組中含有缺失值的觀測數MEAN算術平均STD標準誤差MIN最小值MAX最大值RANGE極差(取值范圍)SUM總和USS未修正的平方和CSS關于均值修正的平方和(也稱偏差平方和)STDERR均值的標準誤差CV變異系數T檢驗總體均值為0假設時,t統計量的值PRT顯著性概率(大于t統計量絕對值的概率)VAR方差SUMWGT' 權數變量的和PCTN某一類中某一小類觀測所占的百分比PCTSUM某一類觀測在全部觀測中所占的百分比多個分析變量和多個統計量能夠出現在同一維中,也可以出現在不同的維中。但是所有的分析變量必須出現在某一維中,所有的統計量也一樣必須出現在同一維中。不能用一個分析變量同另一個分析變量交叉,統計量之間也不能交叉。例如下面兩條語句都是合法的:TABLEA*(X*MEANX*MAX),BTABLEA*X,B*MEANC*MAX另外,統計量操作元素除了可以是統計量關鍵字,如MEAN或MAX,也可以是以下形式的百分數表達式:TABLEA*B*PCTN<A*B>TABLEA*B*PCTN<A>其中<A*B>和vA>是求頻數百分數時設定的分母,兩條語句所求出來的百分數顯然是不同的。分母為<A>的語句比分母為vA*B>的語句求出的百分數要大。我們已經知道,在TABLE語句中分類變量都要事先在CLASS語句中定義過,但是有一個特殊的分類變量叫ALL,也稱全類變量。全類變量ALL可以直接用在TABLE語句中,它僅有一個值,表示所有的子集和及總和,這是一個非常有用的類,常放在表格的最后一行和最后一列計算總和的統計量。例如下面的語句:TABLEA*X*MEANALL*X*MEAN

6定義匯總報表的輸出格式匯總報表的輸出除了要構造匯總報表結構和正確地進行描述統計計算外,還應滿足用戶對輸出報表的有關數據和標題的格式要求。有以下幾種定義報表輸出格式的方法:⑴當一個分類變量、分析變量或統計量用作操作元素時,可以跟隨著等號和標簽。例如,假設原來的TABLE語句為:TABLEA*X*MEAN現在為了修改列標題改為:TABLEA='CLASS'*X='QUANTITY'*MEAN='AVERAGE'這樣,輸出的匯總報表中的列標題從原來的“A”變成“CLASS”,“X”變成“QUANTITY”,“MEAN”變成“AVERAGE”。⑵操作元素還可以進行格式說明,通過*號連接FORMAT或卩=輸出格式名。例如:TABLEA='CLASS'*f=12?2*X='QUANTITY'*f=10?2*MEAN='AVERAGE'*f=8?要注意分類變量A這個元素后的輸出格式是數字格式f=12.2,而不是字符格式,因為它說明的是交叉單元中MEAN計算的數字結果。實際上起作用的是最后一個f=8.的格式說明。⑶使用KEYLABLE和LABEL語句。KEYLABLE語句用于對出現在頁、行或列上的統計量名字和ALL分類變量名字重新標記。LABEL語句用于對出現在頁、行或列上的分類變量或分析變量規定標簽。例如:KEYLABELMEAN='AVERAGE'ALL='TOTAL'LABELA='SEX'X='AMOUNT'要注意KEYLABLE和LABEL語句中定義的標簽,比在TABLE語句中變量后跟隨著等號和標簽的定義方法優先級低。⑷使用PROCFORMAT過程和FORMAT語句。PROCFORMAT過程用來對字符變量或數值變量定義用戶自己的輸入輸出格式。FORMAT語句用于規定分類變量的輸出格式。兩者的配合使用可以使分類變量按用戶自定義格式輸出。例如:PROCFORMAT;VALUE$SEXFMTAl='Female'A2='Male'PROCTABULATEDATA=ABCXFORMATA$SEXFMT。;RUN;$SEXFMT是用戶自定義的輸出格式名,注意在使用時要在輸出格式名后加一個小圓點。當分類變量A定義為輸出格式$SEXFMT.后,在輸出的匯總報表中,分類變量A原先在行或列標題上輸出的是兩個分類值A1和A2,現在改為輸出Female和Male。⑸使用TABLE語句中選項列表。如果規定任選項,第一項前必須加斜桿/。能夠在TABLE語句中出現很多選項,下面我們列出一些常用的選項:MISSTEXT='文本字符'一表輸出時如果有缺失值,則用'文本字符'替代。PRINTMISS——求輸出所有可能的行和列,即使某個特殊的行和列交叉單元中數據不存在。FUZZ=數字——提供一個數字,讓分析變量的值和表單元中的計算結果與這個數

字比較,如果絕對值小于這個數字,看作0處理。RTS=數字一一提供一個整數,用來規定行標題輸出時的左和右邊界值。⑹使用PROCTABULATE語句中的FORMAT^出格式名選項。對每一個報表單元規定缺省的輸出格式,如果沒有規定此選項,缺省值是BEST12.2。此選項主要用于減少報表中輸出數值的域寬。但是如果遇到在TABLE語句中規定有任何輸出格式,它將被取代。7匯總報表綜合舉例假設我們要輸出一個數據集SURVEY的匯總報表。按性別SEX和全類ALL進行分類,求平均年令AGE、最大的身高HEIGH、最小的重量WEIGHT、平均收入INCOME和男女人數的百分比PCTN。修改大標題和增加一個小標題,并格式化輸出表格的行列標記和單元內容。程序如下:libnamestudy""d:\sasdata\mydir

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論