範例 (SELECT IF 指令)
使用簡式邏輯表示式
SELECT IF (SEX EQ 'MALE').
- 所有後續程序將僅使用 SEX 值為 MALE 的觀察值。
- 因為在比較字串變數時會以不同方式處理大寫和小寫,所以不會選取 SEX 值為 male 的觀察值。
SELECT IF (INCOME GT 75000 OR INCOME LE 10000). - 邏輯表示式會測試觀察值是否具有大於 75,000 或小於或等於 10,000 的值。 如果任一關係為 true ,則會在後續分析中使用該觀察值。
SELECT IF (V1 GE V2). - 此範例會選取變數 V1 大於或等於 V2的觀察值。 如果遺漏 V1 或 V2 ,則邏輯表示式不確定,且未選取觀察值。
SELECT IF (SEX = 'F' & INCOME <= 10000). - 邏輯表示式會測試字串變數 SEX 是否等於 F ,以及數值變數 INCOME 是否小於或等於 10,000。 符合這兩種條件的觀察值會包含在後續分析中。 如果觀察值遺漏 SEX 或 INCOME ,則不會選取觀察值。
SELECT IF (SYSMIS(V1)). - 邏輯表示式會測試 V1 是否為系統遺漏。 如果它是系統遺漏值,則會選取該觀察值進行後續分析。
SELECT IF (VALUE(V1) GT 0). - 如果 V1 大於 0 ,則即使 V1 的值已宣告使用者遺漏,也會選取觀察值。
SELECT IF (V1 GT 0). - 如果 V1 是使用者遺漏值,則即使使用者遺漏值大於 0 ,也不會選取觀察值。
SELECT IF ((V1-15) LE (V2*(-0.001))). - 邏輯表示式會比較 V1 減 15 是否小於或等於 V2 乘以 −0.001。 如果為 true ,則會選取觀察值。
SELECT IF ((YRMODA(88,13,0) - YRMODA(YVAR,MVAR,DVAR)) LE 30). - 邏輯表示式會從 1988 年代表最後一天的天數中扣除代表日期 (YVAR、 MVAR及 DVAR) 的天數。 如果差異小於或等於 30 ,則會選取觀察值。
瞭解及變更評估順序
SELECT IF (RECEIV GT DUE AND (REVNUS GE EXPNS OR BALNCE GT 0)).
- 依預設,
AND會在OR之前執行。 此表示式使用括弧來變更評估順序。 - 程式會先測試變數 REVNUS 是否大於或等於變數 EXPNS,或變數 BALNCE 是否大於 0。 其次,程式會測試 RECEIV 是否大於 DUE。 如果括弧中的其中一個表示式為 true ,且 RECEIV 大於 DUE,則會選取觀察值。
- 如果沒有括弧,程式會先測試 RECEIV 是否大於 DUE ,以及 REVNUS 是否大於或等於 EXPNS。 其次,程式會測試 BALNCE 是否大於 0。 如果前兩個表示式為 true ,則 或 如果第三個表示式為 true ,則會選取觀察值。
根據觀察值在檔案中的順序來選取觀察值
COMPUTE #CASESEQ=#CASESEQ+1.
SELECT IF (MOD(#CASESEQ,2)=0).
- 此範例會計算包含每個觀察值之序號的標為暫時刪除變數 #CASESEQ。 會選取所有其他觀察值,從第二個觀察值開始。
- #CASESEQ 必須是標為暫時刪除變數,以便不會針對每個觀察值重新起始設定。 替代方案是使用
LEAVE指令。
在 DO IF 結構內使用 SELECT IF
DO IF SEX EQ 'M'.
+ SELECT IF PRESTIGE GT 50.
ELSE IF SEX EQ 'F'.
+ SELECT IF PRESTIGE GT 45.
END IF.
DO IF結構內的SELECT IF指令會選取威望分數高於 50 的男性,以及聲望分數高於 45 的女性。