示例 (SELECT IF 命令)

使用简单逻辑表达式

SELECT IF (SEX EQ 'MALE').
  • 所有后续过程都将仅使用 SEX 的值为男的情况。
  • 由于在字符串变量的比较中对大写和小写的处理方式不同,因此不会选择 SEX 的值为男性的大小写。
    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).
  • 逻辑表达式将表示日期 (YVARMVARDVAR) 的天数从表示 1988 年最后一天的天数中减去。 如果差异小于或等于 30 ,那么选择个案。

了解和更改评估顺序

SELECT IF (RECEIV GT DUE AND (REVNUS GE EXPNS OR BALNCE GT 0)).
  • 缺省情况下, ANDOR之前执行。 此表达式使用括号来更改求值顺序。
  • 程序首先测试变量 REVNUS 是大于或等于变量 EXPNS,还是变量 BALNCE 大于 0。 其次,程序测试 RECEIV 是否大于 DUE。 如果括号中的其中一个表达式为 true ,并且 RECEIV 大于 DUE,那么将选择该个案。
  • 如果没有括号,那么程序将首先测试 RECEIV 是否大于 DUEREVNUS 是否大于或等于 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 的女性。