基礎指令
敘述句(statement) | 說明 |
DATA 新增資料集名稱 ; | 建立一個新的SAS資料集 |
SET SAS資料集 ; | 讀取永久或是暫存的SAS資料集 |
IF 判斷式 THEN 敘述句 ;
<ELSE IF 判斷式 THEN 敘述句 ; > <ELSE IF 判斷式 THEN 敘述句 ; > |
1.依據判斷式的內容來為資料做分組
2.若某變數(例如:年齡)欲分成多組時,此時會需要撰寫多行IF判斷式。為了讓程式執行更有效率,第二個判斷式我們將採用ELSE IF來陳述 |
LABEL 變數名稱="標籤" ; | 為變數加上標籤,標籤一定用引號框起來 |
KEEP 變數名稱 ; | 保留要存在SAS資料集的變數 |
判斷式 | 說明 |
EQ, = | 等於某一個數值或是文字 |
GT, > | 大於 |
LT, < | 小於 |
GE, >= | 大於或等於 |
LE, <= | 小於或等於 |
NE | 不等於 |
IN | 等於多個數值或是文字 |
邏輯判斷式 | 說明 |
NOT, ~ | 不屬於在條件裡 |
AND, & | 所有條件都要滿足 |
OR, | | 只要有符合一項條件即可 |
資料運算
敘述句(statement) | 說明 |
新增變數=運算式 ; | 新增變數,運算式的部份可以是常數/運算式/函數…等 |
新增變數=(運算式) ; | 1.在括號內放入判斷式,我們稱作布林(Boolean)運算式。
2.若條件判斷為真,其結果為1;否則為0 |
"ddmmyyyy"n | 1.由於日期為數值,在抓取日期資料時(例如:2018/5/2),我們通常無法知道欲抓的日期切確數值,但是我們可以用此格式("02MAY2018"D)告知SAS我們欲抓的日期
2.英文大小寫沒有差異;單雙引號都可以 |
ID歸戶
敘述句(statement) | 說明 |
PROC SORT DATA=SAS資料集 ;
BY <DESCENDING>變數 ; RUN ; |
1.對指定的變數做排序(預設為遞增排序)
2.若要遞減排序,則在變數前面加上DESCENDING 3.若有多個變數要做遞減排序時,則要在每個變數前面加上DESCENDING |
RENAME=(舊的變數名稱=新的變數名稱) | 幫變數修改名稱 |
OUTPUT <SAS資料集> ; | 將資料輸出 |
FIRST.變數名稱 / LAST.變數名稱 | 1.此變數為暫時性變數,在產生SAS資料集時並不會出現
2.暫時性變數內存的值為1或0 3.要先對變數做排序 4.欲使用此指令要下BY敘述句 |
IF 判斷式 THEN DO ;
敘述句1 ; 敘述句2 ; …… END ; |
如果判斷式後面要放入的資訊超過1個敘述句時,就用DO及END把敘述句包在裡面 |
新變數+舊變數(運算式) | 1. 欲對某個變數做垂直加總,
「+」為關鍵字 |
敘述句(statement) | 說明 |
新變數+舊變數(or 運算式) | 1.目標:欲對某個變數做垂直(向下)累計加總
2.把累加後的數值放在新變數裡 3.舊變數(or 運算式)的位置放的是欲被加總的變數 4.若遇到遺漏值,在加總時會自動排 5.「+」為關鍵字,所以不可以改成「-」 |
敘述統計
敘述句(statement) | 說明 |
PROC SUMMARY DATA=SAS資料集 ;
VAR 變數名稱 ; OUTPUT OUT=新SAS資料集 <統計量=統計量的變數名稱> ; RUN ; |
1.敘述性統計報表
2.VAR放的是欲分析的變數 3.若分析後的報表要輸出為SAS資料集,則在OUTPUT敘述句裡下OUT=來產生SAS資料集 4.同時,亦可以在OUTPUT敘述句裡下統計量,並給予該統計量變數名稱 |
資料轉置
敘述句(statement) | 說明 |
PROC TRANSPOSE DATA=SAS資料集
OUT=新SAS資料集; VAR 分析變數 ; BY 分析群組變數 ; ID 新的變數名稱; RUN ; |
1.對資料進行轉置
2.OUT=把轉置完成的SAS資料集輸出 3.VAR敘述句是欲轉置的變數 4.BY敘述句是指定某個(些)變數來控制變數轉置情形 5.BY敘述句內的變數一定要排序 6.ID敘述句為產生新的變數名稱 |
"變數名稱"n | 當變數名稱不符合SAS命名規則時,就用引號把該變數框起來,並在後方緊接著n |
資料計算
敘述句(statement) | 說明 |
PROC FREQ DATA=SAS資料集
ORDER=FREQ; TABLE 分析變數 / OPTION(S) ; BY 分析群組變數 ; RUN ; |
1.對資料計算(累積)次數及(累積)百分比
2.把欲計算的變數放在TABLE敘述句裡 3.ORDER=freq為輸出時依照頻率遞減排序 4.OPTION(S)的部份調整報表輸出的統計量 5.BY敘述句是指定某個(些)變數來控制變數計算統計量的情形 6.BY敘述句內的變數一定要排序 |
PROC SORT DATA=SAS資料集 NODUPKEY ;
BY <DESCENDING>變數 ; RUN ; |
查看被排序的變數是否有重複,若有,則要刪除觀察值 |
聯結表格
敘述句(statement) | 說明 |
DATA SAS資料集 ;
MERGE SAS資料集1(IN=自訂變數1) SAS資料集2(IN=自訂變數2) …… ; BY 關鍵字(變數) ; IF 自訂變數1=1…… ; RUN ; |
1.對兩張(多張)SAS資料集進行水平合併
2.要合併的SAS資料集要先進行排序 3.SAS資料集內一定要有共同的合併關鍵字(即變數名稱要相同),且變數型態要一致。若關鍵字名稱不相同則需要改變變數名稱 4.關鍵字的長度可以不相同,但資料可能會被截斷 5.可在欲被合併的SAS資料集後面加上IN=自定變數,即可產生暫時性的變數,裡面存的數值為0或是1;1表示在合併資料的過程中,此次有貢獻資料出來合併,反之,0表示在合併資料的過程中,此次沒有貢獻資料出來合併 6.IF判斷式放自訂變數的條件,來決定想要輸出的資料集為何 |
遺漏值處理
敘述句(statement) | 說明 |
ARRAY array-name{維度} 變數 ; | 1.array-name不是變數
2.把變數全部打包在一起,並暫時命名此群組為array-name 3.維度的個數必須要和變數個數相同 |
DIM(array-name) | SAS函數;計算Array裡的維度有幾個 |
DO 指標變數=1 TO N ;
敘述句 ; END ; |
1.針對敘述句做反覆運算,從1開始,重覆N次
2.指標變數會新增在SAS資料集內 |
統計分析
敘述句(statement) | 說明 |
PROC LOGSITIC DATA=sas資料集 ;
CLASS 類別變數 ; MODEL 依變數=解釋變數 ; RUN ; |
1.做羅吉斯迴歸分析
2.CLASS敘述句是宣告哪些是類別變數 3.依變數放的是二元/名目變數 4.解釋變數的部份包括連續資料與類別資料 |