示例 (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的个案。 如果缺少 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). - 逻辑表达式将表示日期 (YVAR, MVAR和 DVAR) 的天数从表示 1988 年最后一天的天数中减去。 如果差异小于或等于 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 的女性。