【正文】
每條觀測(cè)需要調(diào)用三次這個(gè)子程序, Test 變量的值分別來(lái)自數(shù)據(jù)集字段變量 Test Test Test3。 otherwise grade=39。 Return 。 link recode 。子程序中我們用前面已介紹過(guò)的 SELECT— WHEN 選擇語(yǔ)句進(jìn)行轉(zhuǎn)換。每一個(gè)子程序的 RETURN 語(yǔ)句能正確地返 回調(diào)用點(diǎn),而不發(fā)生混亂,是通過(guò)內(nèi)部的堆棧結(jié)構(gòu)實(shí)現(xiàn)的。 RETURN 。 圖 用 GOTO 語(yǔ)句設(shè)計(jì)的條件計(jì)數(shù)器和累加器 81edb6ff5799cbd72b415b6e1b9a8a6b SAS 系統(tǒng)和數(shù)據(jù)分析 電子 商務(wù)系列 上海財(cái)經(jīng)大學(xué)經(jīng)濟(jì)信息管理系 IS/SHUFE Created by Page 19 of 20 五、 實(shí)現(xiàn)連接( LINK 語(yǔ)句) LINK 連接語(yǔ)句的作用是立即轉(zhuǎn)到由 LINK 語(yǔ)句指示的語(yǔ)句標(biāo)號(hào),并從那里開(kāi)始繼續(xù)執(zhí)行語(yǔ)句直到一個(gè) RETURN 語(yǔ)句被執(zhí)行。 ok: acctest=acctest+test 。例如,我們81edb6ff5799cbd72b415b6e1b9a8a6b SAS 系統(tǒng)和數(shù)據(jù)分析 電子 商務(wù)系列 上海財(cái)經(jīng)大學(xué)經(jīng)濟(jì)信息管理系 IS/SHUFE Created by Page 18 of 20 要對(duì)當(dāng)前輸入的一組成績(jī)數(shù)據(jù) TEST 進(jìn)行動(dòng)態(tài)統(tǒng)計(jì),計(jì)數(shù)到目前輸入為止不及格( 60 分)的人數(shù) COUNTIF,和累計(jì)的總分 ACCTEST(包括不及格的分?jǐn)?shù))。 ?? 。 if sex=M ; Proc print data= Survey03 。 在使用 IF— THEN/ELSE 語(yǔ)句的多層嵌套結(jié)構(gòu)時(shí)要注意兩點(diǎn):一是要以鋸齒型來(lái)排列一81edb6ff5799cbd72b415b6e1b9a8a6b SAS 系統(tǒng)和數(shù)據(jù)分析 電子 商務(wù)系列 上海財(cái)經(jīng)大學(xué)經(jīng)濟(jì)信息管理系 IS/SHUFE Created by Page 17 of 20 組組 IF— THEN/ELSE 語(yǔ)句,目的是為了通過(guò)程序書(shū)寫(xiě)格式就能明確 IF— THEN/ELSE語(yǔ)句的層次和配對(duì)。 Data Survey02 。 當(dāng)我們?cè)趧?chuàng)建 SAS 數(shù)據(jù)集時(shí)使用 IF 語(yǔ)句的格式之一,可以根據(jù)被處理的觀測(cè)是否使 IF條件表達(dá)式為真,來(lái)決定是否執(zhí)行 THEN 后面的 SAS 語(yǔ)句。 Otherwise grade=”D” 。 程序如下: Libname Study “d:\sasdata\mydir” 。最后用一個(gè) END 語(yǔ)句 結(jié)束這個(gè) SELECT 組。 19MAY99 20MAY99 21MAY99 24MAY99 25MAY99 Proc print data= MAV 。 這個(gè)程序的特點(diǎn)是將歷史記錄的收盤(pán)價(jià)全部存放到數(shù)組 a{i}中,因此 程序編寫(xiě)簡(jiǎn)單和短 圖 用循環(huán) DO 組、數(shù)組和 RETAIN 語(yǔ)句所產(chǎn)生的 MAV 數(shù)據(jù)集 81edb6ff5799cbd72b415b6e1b9a8a6b SAS 系統(tǒng)和數(shù)據(jù)分析 電子 商務(wù)系列 上海財(cái)經(jīng)大學(xué)經(jīng)濟(jì)信息管理系 IS/SHUFE Created by Page 14 of 20 小,容易理解,執(zhí)行速度快。 Do i =_n _ - day + 1 to _n _ 。 對(duì)于只有少量觀測(cè)的數(shù)據(jù)集,我們還可以編寫(xiě)如下程序: Data MAV(Keep= date close moveaver) 。 程序中使用了自動(dòng)變量 _n_,它自動(dòng)存放當(dāng)前觀測(cè)的邏輯順序號(hào)。 End 。 Array a{4} 。第四種使用格式是將初始值 100 用小括號(hào)括起來(lái), SAS 系統(tǒng)將分配括號(hào)中的這個(gè)值給變量列表中的第一個(gè)變量,即 T1=100, T2 和 T3 為缺失值。 我們這里給出了 RETAIN 語(yǔ)句幾種常用的使用格式: ? Retain 。 3. 在循環(huán) DO 組中使用 OUTPUT 語(yǔ)句產(chǎn)生數(shù)據(jù)集 如果在 DO- END 內(nèi)循環(huán)結(jié)束語(yǔ)句 END 前插入一條 OUTPUT 語(yǔ)句,那么每次內(nèi)循環(huán)將輸出一條觀測(cè),而不是內(nèi)循環(huán)所產(chǎn)生的所有變量值只輸出在一條觀測(cè)中。 a{i}=(X1+X2+X3)*i 。第五種方式下標(biāo)用星號(hào) *來(lái)代替,表示 SAS 系統(tǒng)通過(guò)數(shù)組中的變量個(gè)數(shù)來(lái)確定下標(biāo)。 ? Array x{5,3} T1T15 。這個(gè)程序中的 X1 和 X2都采用相同種子變量值 SEED=20202001 所產(chǎn)生的均勻分布 的隨機(jī)數(shù)流。 程序中的 X1 和 X2 都采用相同種子變量值 SEED=20202001 來(lái)產(chǎn)生的均勻分布的隨機(jī)數(shù)流。 seed = 20202001 。 ? DO 語(yǔ)句的程序格式之四: DO UNTIL ( 條件表達(dá)式 ) 。 一些 SAS語(yǔ)句 。單擊 OK 完成。 二、 選擇 View/Rename 命令更改變量的名稱 如果要更改變量 的名稱 ,例如將 NAME 變量名更改為 ID_NAME。要注意的是,窗口中顯示的是數(shù)據(jù)集的輸出格式,我們?cè)谳斎牖蛐薷臅r(shí),一定要按輸入格式進(jìn)行輸入,否則可能發(fā)生錯(cuò)誤。用戶仍然可以在命令框中鍵入命令來(lái)編輯,如鍵入DROP 命令去掉不需要顯示的變量(投影操作)、 WHERE 命令獲得子集(選擇操作)及 WHERE ALSO 命令獲得子集的子集。例如 ,在 PROGRAM EDITOR 窗口中輸入的程序如下: Proc fsview data= 。如果選擇了 Edit/Update/Record 命令,則按數(shù)據(jù)集的一條條記錄進(jìn)行編輯,每按一個(gè) Enter 編輯光標(biāo)跳到下一條記錄。 圖 FSVIEW 屏編輯窗口 81edb6ff5799cbd72b415b6e1b9a8a6b SAS 系統(tǒng)和數(shù)據(jù)分析 電子 商務(wù)系列 上海財(cái)經(jīng)大學(xué)經(jīng)濟(jì)信息管理系 IS/SHUFE Created by Page 3 of 20 3. 新增一條記錄 如果需要新增記錄,選擇 Edit/Autoadd 命令,將新增一條空白記錄,然后在空白記錄上輸入, 按 Enter鍵將繼續(xù)新增空白記錄。單擊 OK 修改完成。但我們所介紹的DATA步中的 SAS 語(yǔ)句都是按語(yǔ)句出現(xiàn)的次序?qū)γ恳粋€(gè)觀測(cè)進(jìn)行處理。 ? DO 語(yǔ)句的程序格式之三: DO WHILE ( 條件表達(dá)式 ) 。 DO WHILE 是在循環(huán)體的開(kāi)頭,而 DO UNTIL 是在循環(huán)體的結(jié)束,也就是說(shuō) DO UNTIL 至少執(zhí)行循環(huán)體中一些 SAS 語(yǔ)句一次。 End 。最常用的均勻分布隨機(jī)函數(shù)是 RANUNI( seed) ,這個(gè)函數(shù)是一個(gè)模為 231- 1,乘子為 397204094 的素?cái)?shù)模發(fā)生器。 對(duì)于均值為 M,標(biāo)準(zhǔn)差為 S 的正態(tài)分布隨機(jī)數(shù),可由標(biāo)準(zhǔn)正態(tài)分布隨機(jī)數(shù)的線性函數(shù)得到: X=M+S*NORMAL( seed) 2. 在循環(huán) DO 組中使用下標(biāo)數(shù)組產(chǎn)生數(shù)據(jù)集 當(dāng)我們需要用同一種方法來(lái)處理很多變量時(shí) ,可以用數(shù)組語(yǔ)句定義這組 變量為數(shù)組的一些元素,這個(gè)數(shù)組中的一些元素就可以在 DATA步中較后面的 SAS 語(yǔ)句里以數(shù)組下標(biāo)的形式被引用。第二種方式表示定義了一個(gè)二維名為 X 的數(shù)組,它共有 5 3=15 個(gè)元素,對(duì)應(yīng)的變量為 T1到 T15。 Input X1X3 。 程序運(yùn)行結(jié)果如圖 所示。但是因?yàn)樵诿看沃貜?fù)開(kāi)始 DATA步時(shí),所有用 INPUT 或賦值語(yǔ)句創(chuàng)建的變量將被設(shè)置為缺