【正文】
v a r i a b l e 規(guī)定累加變量e x p r e s s i o n 有效的 S A S 表達式應用準則: ? 累加變量的觀測被讀入之前 , 值為 0; ? 表達式的計算結果為缺失值時 , 取 0代替; ? 表達式可以使用比較算符; ? 語句 A+(B)中的 ( +) 是必須的 , 不能寫成 AB。 proc print。 /* 規(guī)定變量 lstknm的長度為 12 */ lstknm=39。 /* lstknm的長度為 4,所以顯示結果為 lstknm =大秦鐵 */ proc print。 lstknm=39。 /*規(guī)定數(shù)組元素,它的值是一函數(shù)值 */ a=a+b。 proc print。 n=_N_。 將表達式結果賦予一個變量。第 7章 數(shù)據(jù)步修改與選擇觀測 清華大學經(jīng)管學院 朱世武 Resdat樣本數(shù)據(jù): SAS論壇: 本章介紹數(shù)據(jù)步中用于修改與選擇觀測的語句。 選項說明: v a r i a b l e 規(guī)定變量名或數(shù)組元素e x p r e s s i o n 有效的 S A S 表達式例 賦值語句舉例 data a。 error=_error_。 run。 /*規(guī)定一個已經(jīng)存在的變量 a, 它的值為原來值和 b之和 */ 結果顯示: Obs Name Sex Age Height Weight n error first_s last_s 1 Alice F 13 1 0 1 0 2 Barbara F 13 2 0 0 0 3 Carol F 14 3 0 0 0 4 Jane F 12 4 0 0 0 5 Ja F 15 5 0 0 0 6 Joyce F 11 6 0 0 0 7 Judy F 14 7 0 0 0 8 Louise F 12 8 0 0 0 9 Mary F 15 9 0 0 1 10 Alfred M 14 10 0 1 0 11 Henry M 14 11 0 0 0 …… …… 結果變量類型 決定結果變量類型的準則: ? 如果表達式中的變量全為數(shù)值型 , 結果變量為數(shù)值型; ? 如果表達式中的變量全為字符型 , 結果變量為字符型; ? 如果表達式中的變量既有數(shù)值又有字符型 , 結果變量為數(shù)值型 。深發(fā)展 39。 run。深發(fā)展 39。 run。 例 累加語句等于使用 SUM函數(shù)和一個 RETAIN語句 data a (keep=name height s_h)。 run。 retain s_h 0。 uss+ Dret**2。 nmis+sector^=39。 DELETE語句 DELETE語句停止處理當前觀測,該觀測值不被讀入到創(chuàng)建的數(shù)據(jù)集, SAS系統(tǒng)返回到 DATA步的開頭處理其他觀測。 if Stktype=’B’ then delete。 set 。設計復雜程序時,常會用到 DELETE語句的這種用法。 使用 LOSTCARD語句時 , 必須用 IFTHEN語句給出丟失數(shù)據(jù)行的條件 。 if id ne idc then do。 lostcard。 proc print。 每個觀測包含兩個數(shù)據(jù)行 Obs id reject idc pass 1 301 32 301 61432 2 302 53 302 83171 3 411 46 411 99551 LOSTCARD語句的執(zhí)行步驟: ? SAS日志上輸出一個丟失記錄卡信息 , 一條標尺及創(chuàng)建當前觀測所讀的數(shù)據(jù)行 。 例 每個觀測包含 3個數(shù)據(jù)行 data a。 101 A 102 B 102 B 103 C 103 C 103 C 104 D 105 E 105 E 105 E 。 run。 LOG窗口顯示的信息: NOTE: LOST CARD. RULE: +1+2+3+4+5+6+7+8+9+0 5 101 A 6 102 B 7 102 B NOTE: LOST CARD. 8 103 C NOTE: LOST CARD. 9 103 C NOTE: LOST CARD. 11 104 D 12 105 E 13 105 E NOTE: 數(shù)據(jù)集 有 2 個觀測和 6 個變量。 set 。 例中,數(shù)據(jù)集 A從數(shù)據(jù)集 4條觀測,因為當指針標識 _N_=5時,遇到 STOP語句,正被處理的那條觀測沒有添加到數(shù)據(jù)集 A中 。 語句格式 : ABORTABEND|RETURN|n。 顯示管理方式和交互行方式下: ? 立即停止處理并返回到主機系統(tǒng)。 set 。 NOTE: 數(shù)據(jù)集 有 4 個觀測和 12 個變量。 if _n_=5 then abort。 NOTE: 從數(shù)據(jù)集 讀取了 5 個觀測。 NOTE: “DATA 語句 ” 所用時間(總處理時間) : 實際時間 秒 CPU 時間 秒 例 ABORT語句防止輸入無效數(shù)據(jù)時出錯。 cards。 輸出結果: Obs ssn pay 1 111 100 WHERE語句的性質(zhì) ?WHERE語句讀入數(shù)據(jù)集之前選擇觀測 。 ?能用 WHERE語句的地方一定可以用 IF語句來代替,反之則不行。 Where hstocd between 600000 and 600899。 /*計算缺失值數(shù)目 */ Where name is null; LIKE算符的兩個特殊模式: ? 百分號 ( %) 可以替代任意多個字符 。D_an39。D_an__39。D_an%39。 例 使用算符 SAMEAND來增加較多的從句到程序中已有的 WHERE語句后面,而不需要重新打入原來的從句 proc gplot data=。 run。 Where x/y。 字符變量 C不能單獨地作為邏輯表達式 例 選擇一定范圍內(nèi)的觀測 Where x between 1 and 5。 where _n_100。 if _n_100。 語句格式 OUTPUTdatasetname1 …data setnamen。 drop score1 score3。 output。 02126 99 96 94 02128 89 90 88 。每個新觀測將包括代號 ID和一次測驗值 SCORE. Obs ID score 1 02126 99 2 02126 96 3 02126 94 4 02128 89 5 02128 90 6 02128 88 例 一個 DATA步創(chuàng)建多個數(shù)據(jù)集 data A B。 run。 by stktype。 if first. Stktype then Num=0。 run。數(shù)據(jù)處理時用這個語句會很省力。 其中: charcter規(guī)定代表缺失值的字符。