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