範例 (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的觀察值。 如果遺漏 V1V2 ,則邏輯表示式不確定,且未選取觀察值。
    SELECT IF (SEX = 'F' & INCOME <= 10000).
  • 邏輯表示式會測試字串變數 SEX 是否等於 F ,以及數值變數 INCOME 是否小於或等於 10,000。 符合這兩種條件的觀察值會包含在後續分析中。 如果觀察值遺漏 SEXINCOME ,則不會選取觀察值。
    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 年代表最後一天的天數中扣除代表日期 (YVARMVARDVAR) 的天數。 如果差異小於或等於 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 的女性。