【正文】
電子商務(wù)系列 上海財(cái)經(jīng)大學(xué)經(jīng)濟(jì)信息管理系 IS/SHUFE Created by Page 12 of 28 TABLE A*X*MEAN ALL*X*MEAN 6. 定義匯總報(bào)表的輸出格式 匯總報(bào)表的輸出除 了要構(gòu)造匯總報(bào)表結(jié)構(gòu)和正確地進(jìn)行描述統(tǒng)計(jì)計(jì)算外,還應(yīng)滿足用戶對(duì)輸出報(bào)表的有關(guān)數(shù)據(jù)和標(biāo)題的格式要求。 在 TABLE 語(yǔ)句中如果規(guī)定了分析變量,則可以要求計(jì)算下表所示的一個(gè)或幾個(gè)統(tǒng)計(jì)量。 Class A B C 。程序和輸出匯總報(bào)表形式如下所示: Proc tabulate Data=ABCX 。 Run 。 Var X 。程序和輸出匯總報(bào)表形式 如下所示: Proc tabulate Data=ABCX 。匯總報(bào)表輸出的表格形狀和所計(jì)算的統(tǒng)計(jì)量都是由 TABLE 語(yǔ)句中的表達(dá)式?jīng)Q定的,這個(gè)表達(dá)式中包含元素和操作符。 ? NOSEPS——要求在表體中不出現(xiàn)水平分隔線。 … … Run 。 2. PROC TABULATE 語(yǔ)句格式 在 PROC TABULATE過(guò)程中, 常常使用一些控制匯總報(bào)表產(chǎn)生的語(yǔ)句,一般過(guò)程形式如下: PROC TABULATE 選項(xiàng)列表 。在通常情況下,產(chǎn)生匯總報(bào)表要先將數(shù)據(jù)根據(jù)需要進(jìn)行分類,然后在分類的基礎(chǔ)上計(jì)算一些統(tǒng)計(jì)量。 Run 。 BY sex 。程序如下: LIBNAME STUDY “D:\SASDATA\MYDIR”。 WHERE heigh= 。 round width=min 。每當(dāng) SUMBY變量的值變化或者 BY 語(yǔ)句中列在 SUMBY 變量前的變量值改變時(shí), PRINT 將把對(duì)應(yīng) BY 組中的 SUM語(yǔ)句中的變量求和。 H或 HORIZONTAL表示所有列抬頭水平打印, V 或 VERTICAL 表示所有列抬頭垂直打印。 ? SPLIT或 S=‘ 分隔符 ’ ——規(guī)定一個(gè)字符(如 *號(hào)或 號(hào))用于將較長(zhǎng)的標(biāo)簽分隔成幾行。 …… Run 。 40dca2807e07d52dcf97c3bcf0947ed9 SAS 系統(tǒng)和數(shù)據(jù)分析 電子商務(wù)系列 上海財(cái)經(jīng)大學(xué)經(jīng)濟(jì)信息管理系 IS/SHUFE Created by Page 2 of 28 PAGEBY 變量 。40dca2807e07d52dcf97c3bcf0947ed9 SAS 系統(tǒng)和數(shù)據(jù)分析 電子商務(wù)系列 上海財(cái)經(jīng)大學(xué)經(jīng)濟(jì)信息管理系 IS/SHUFE Created by Page 1 of 28 第十七課 使用列表報(bào)告 PROC PRINT 和匯總報(bào)告 PROC TABULATE 利用 SAS 系統(tǒng)提供的各種過(guò)程可以制作各種風(fēng)格的報(bào)表。 BY 變量列表 。 WHERE 條件表達(dá)式 。如果變量沒(méi)有定義標(biāo)簽,則用變量名作為列抬頭。 ? HEADING=H或 V——規(guī)定打印列抬頭的方向。 SUMBY 語(yǔ)句必須和 BY 語(yǔ)句連用,用來(lái)對(duì)一部分 BY 組中指定的變量求和。*39。 FORMAT Bdate DATE7. Ine 。去掉腳注。 ID sex 。 WHERE heigh= 。與每一個(gè)單元有關(guān)的統(tǒng)計(jì)量是由該類所有觀測(cè)值計(jì)算得到的。另外 , 還能格式化單元中的數(shù)據(jù)值和產(chǎn)生用戶化的行標(biāo)題和列標(biāo)題。 WHERE 條件表達(dá)式 。如果省略,則為最近建立的40dca2807e07d52dcf97c3bcf0947ed9 SAS 系統(tǒng)和數(shù)據(jù)分析 電子商務(wù)系列 上海財(cái)經(jīng)大學(xué)經(jīng)濟(jì)信息管理系 IS/SHUFE Created by Page 7 of 28 SAS 數(shù)據(jù)集。 4. TABLE 語(yǔ)句的使用和輸出表格結(jié)構(gòu) 如何正確地理解和使用 TABLE語(yǔ)句是掌握 PROC TABULATE過(guò)程的關(guān)鍵所在。 例 1: TABLE 表達(dá)式中只有一個(gè)分類變量 A,既沒(méi)有規(guī)定分析變量,也沒(méi)有指明統(tǒng)計(jì)量,則缺省的統(tǒng)計(jì)量為頻數(shù) N,即分類變量值的交叉頻數(shù)。 Class A B。 Table A , B , C 。 A B A1 A2 B1 B2 N N N N 6 6 6 6 40dca2807e07d52dcf97c3bcf0947ed9 SAS 系統(tǒng)和數(shù)據(jù)分析 電子商務(wù)系列 上海財(cái)經(jīng)大學(xué)經(jīng)濟(jì)信息管理系 IS/SHUFE Created by Page 10 of 28 例 5:使用星號(hào)操作符隔開(kāi) TABLE語(yǔ)句的兩個(gè)表達(dá)式將產(chǎn)生一個(gè)交叉等級(jí)表格。程序和輸出匯總報(bào)表形式如下所示: Proc tabulate Data=ABCX 。如果 TABLE 語(yǔ)句中既沒(méi)有出現(xiàn)分析變量如 X,又沒(méi)有出現(xiàn)統(tǒng)計(jì)量如 MEAN,例如上面的例 1~ 6 中的 TABLE 語(yǔ)句都沒(méi)有規(guī)定分析變量和統(tǒng)計(jì)量,如 TABLE A 語(yǔ)句只規(guī)定了分類變量 A,則每個(gè)表單元將給出分類變量的交叉頻數(shù)。全類變量 ALL 可以直接用在 TABLE 語(yǔ)句中,它僅有一個(gè)值,表示所有的子集和及總和,這是一個(gè)非常有用的類,常放在表格的最后一行和最后一列計(jì)算總和的統(tǒng)計(jì)量。 KEYLABLE 語(yǔ)句用于對(duì)出現(xiàn)在頁(yè)、行或列上的統(tǒng)計(jì)量名字和 ALL 分類變量名字重新標(biāo)記。當(dāng)分類變量 A 定義為輸出格式 $, 在輸出的匯總報(bào)表中,分類變量 A 原先在行或列標(biāo)題上輸出的是兩個(gè)分類值 A1 和 A2,現(xiàn)在改為輸出 Female 和 Male。對(duì)每一個(gè)報(bào)表單元規(guī)定缺省的輸出格式,如果沒(méi)有規(guī)定此選項(xiàng),缺省值是 。 value $sexfmt F=39。39。 var age heigh weight ine 。How to use tabulate statement39。定義的 PCT 是一種較常用的百分比格式,其中 low0 表示從最小值 LOW 到不包含 0 的值域, 0high 表示從 0 到最大值的值域,圓括號(hào)中的選項(xiàng) prefix=39。行維的表達(dá)式和列維表達(dá)式之間用逗號(hào)(,)分隔。 一、 DATA 程序步的三個(gè)主要步驟 為了從外部原始數(shù)據(jù)文件得到 SAS 數(shù)據(jù)集, DATA程序步的三個(gè)主要步驟為: ? 啟動(dòng)一個(gè)數(shù)據(jù)步,命名將要?jiǎng)?chuàng)建的數(shù)據(jù)集(使用 DATA 語(yǔ)句) ? 確定要讀入的外部文件(使用 INFILE語(yǔ)句) ? 描述如何讀入每一條記錄(使用 INPUT語(yǔ)句) 如果需要在程序中直接嵌入數(shù)據(jù),第二步用 CARDS語(yǔ)句代替 INFILE語(yǔ)句。 YN程序返回 D A T A 步的頂部退出 D A T A 步循環(huán),形成 S A S 數(shù)據(jù)集開(kāi)始下一個(gè) D A T A 步或 P R O C 步D A T A 開(kāi)始,并確定創(chuàng)建數(shù)據(jù)集名I N P U T 語(yǔ)句將文件下一條記錄讀入 P D V其它語(yǔ)句可以修改 P D V 中的內(nèi)容P D V 中值在 D A T A 步底部被寫入數(shù)據(jù)集I N F I L E 語(yǔ)句確定外部原始文件用 I N F I L E 所涉及到變量建立P D V ,并初始化外部文件下一條記錄是否為空? 圖 執(zhí)行 DATA 步時(shí)的內(nèi)部循環(huán)過(guò)程 40dca2807e07d52dcf97c3bcf0947ed9 SAS 系統(tǒng)和數(shù)據(jù)分析 電子商務(wù)系列 上海財(cái)經(jīng)大學(xué)經(jīng)濟(jì)信息管理系 IS/SHUFE Created by Page 17 of 28 二、 讀入模式 確定變量的讀入模式共有四種: ? column 模式 ? formatted 模式 ? list 模式 ? named 模式 我們?cè)谶@里將介紹三種主要的 column 模式、 formatted 模式和 list 模式。 Run 。用于一個(gè)數(shù)據(jù)行用多條 INPUT語(yǔ)句讀取數(shù)據(jù)。 Proc print data=testd2 。下表列出了可以同 INPUT 語(yǔ)句一起使用的兩種類型的指針控制。 Run 。 Run 。當(dāng)外部文件中的輸入值之間至少有一個(gè)空格隔開(kāi),且丟失值用小數(shù)點(diǎn)表示,字符型數(shù)值長(zhǎng)度不超過(guò) 8 個(gè)字節(jié)(否則需用LENGTH, ATTRIB 或 INFORMAT 語(yǔ)句規(guī)定長(zhǎng)度)時(shí),只需在 INPUT 語(yǔ)句中列出要被賦值的變量名即可,而沒(méi)有必要知道數(shù)據(jù)占據(jù)哪幾列 。 ”、“ : ”和“ ~”是自由格式輸入方式中的三個(gè)格式修飾符。 例如,我們?cè)?NOTEPAD 記 事本程序中輸入如圖 所示內(nèi)容,并以 文件名存入到 D:\sasdata\mydir 目錄下,作為第二個(gè)我們用來(lái)實(shí)驗(yàn)的外部文件。 圖 數(shù)據(jù)帶引號(hào)和空格且以分隔符隔開(kāi)的外部文件 40dca2807e07d52dcf97c3bcf0947ed9 SAS 系統(tǒng)和數(shù)據(jù)分析 電子商務(wù)系列 上海財(cái)經(jīng)大學(xué)經(jīng)濟(jì)信息管理系 IS/SHUFE Created by Page 23 of 28 第十九課 SAS 宏功能簡(jiǎn)介 SAS 系統(tǒng)提供了強(qiáng)大的宏功能( macro facility) , 通過(guò)創(chuàng)建宏變量和宏能方便地完成: ? 重復(fù)分析任務(wù),大大精減了程序量 ? 從系統(tǒng)獲取一些如 SAS 啟動(dòng)時(shí)間、日期、版本號(hào)等信息 ? 有條件地執(zhí)行數(shù)據(jù)步和過(guò)程步 ? 保持程序的獨(dú)立性和移植性,產(chǎn) 生與數(shù)據(jù)無(wú)關(guān)的程序 ? 用宏變量在不同數(shù)據(jù)步和過(guò)程步之間傳遞數(shù)據(jù) 一、 SAS 宏變量 宏變量(也稱符號(hào)變量)屬于 SAS 宏語(yǔ)言的范疇,和數(shù)據(jù)步中的變量概念是不一樣的。 圖 用 LIST 模式的格式修飾符讀入外部文件后的 SAS 數(shù)據(jù)集 40dca2807e07d52dcf97c3bcf0947ed9 SAS 系統(tǒng)和數(shù)據(jù)分析 電子商務(wù)系列 上海財(cái)經(jīng)大學(xué)經(jīng)濟(jì)信息管理系 IS/SHUFE Created by Page 24 of 28 2. 宏變量的引用 為了引用一個(gè)宏變量的值,在宏變量前加上一個(gè)符號(hào) amp。dsname 。例如,我們可用WHERE 語(yǔ)句來(lái)規(guī)定用作打印和分析的一個(gè)范圍。 Where amp。提請(qǐng)大家注意宏變量賦值日期常數(shù) ?01jan79?d的這種格式,也可以直接賦日期存40dca2807e07d52dcf97c3bcf0947ed9 SAS 系統(tǒng)和數(shù)據(jù)分析 電子商務(wù)系列 上海財(cái)經(jīng)大學(xué)經(jīng)濟(jì)信息管理系 IS/SHUFE Created by Page 25 of 28 儲(chǔ)值,如改成 %Let start=6940 和 %Let end=7670。 Proc print data=amp。dsname” 。最簡(jiǎn)單的宏就像一個(gè)宏變量 一樣工作,但復(fù)雜的宏可以包括分支和循環(huán)等結(jié)構(gòu),能實(shí)現(xiàn)許多宏變量不能實(shí)現(xiàn)的功能。 SAS 程序中可以包括任意多個(gè)宏,且在程序中可以多 次調(diào)用一個(gè)宏。 Title “amp。 Run 。 Data 。 %Macro print(setname2) 。 %If %upcase(amp。 當(dāng)規(guī)定參數(shù)宏變量 getdata 的值為大寫字符串 YES或小寫字符串 yes時(shí), %IF 條件成立,宏處理器執(zhí)行 %THEN的分句,即調(diào)用宏 %create(amp。dsname),但打印的數(shù)據(jù)集不同。 %Do n=1 %to amp。 Title “%names(Test, 3) generated by macro variable” 。