SPSS DO IF 简易教程
作者:Ruben Geert van den Berg,发表于 SPSS A-Z
SPSS 中,DO IF ... END IF
之间的转换命令仅应用于满足一个或多个条件的个案(数据行)。在许多情况下,使用 IF 命令可以更快地达到相同的结果。
SPSS Do If 示例
假设我们需要将人们的月收入转换为收入等级。我们可能希望对男性和女性受访者使用不同的分界点。在这种情况下,我们可以首先使用 RECODE 命令,仅针对性别为女性的个案。接下来,我们将对男性使用不同的 RECODE 命令。以下 语法 演示了这一点,使用了 employees.sav 数据文件。
SPSS Do If 语法示例 1
***1. 设置默认目录并打开数据文件。**
cd 'd:downloaded'. /* 或者 "employees.sav" 所在的任何位置。*/
get file 'employees.sav'.
***2. RECODE 命令仅限于女性受访者。**
do if gender = 0.
recode monthly_income (lo thru 2000 = 1)(lo thru 2400 = 2)(lo thru hi = 3) into income_class.
end if.
***3. RECODE 命令仅限于男性受访者。**
do if gender = 1.
recode monthly_income (lo thru 2500 = 1)(lo thru 3000 = 2)(lo thru hi = 3) into income_class.
end if.
***4. 检查结果。** crosstabs income_class by gender.
Else If
虽然之前的语法可以完成任务,但有一种更短的方法可以实现完全相同的结果:ELSE IF
。这意味着只有对于 1) 满足当前条件 并且 2) 不满足任何先前条件的个案,才会执行后续的命令。以下语法展示了如何使用它。
SPSS Do If 语法示例 2
***针对女性和男性的不同 RECODE 命令。**
do if gender = 0.
recode monthly_income (lo thru 2000 = 1)(lo thru 2400 = 2)(lo thru hi = 3) into income_class.
else if gender = 1.
recode monthly_income (lo thru 2500 = 1)(lo thru 3000 = 2)(lo thru hi = 3) into income_class. end if.
Else
与 ELSE IF
类似,ELSE
后面的命令将对所有不满足任何先前条件的个案执行。这里需要注意的重要一点是,ELSE
不 包括由于 缺失值 导致无法评估先前条件的个案。
最后一个语法示例通过使用 XDATE 函数创建了一个出生年代变量(birth decennium)。接下来,FREQUENCIES 命令确认生日未知的受访者未被分配到任何出生年代。
SPSS Do If 语法示例 3
***1. 创建 birth_decennium 变量。**
do if xdate.year(date_of_birth) lt 1960.
compute birth_decennium = 1.
else if xdate.year(date_of_birth) lt 1970.
compute birth_decennium = 2.
else if xdate.year(date_of_birth) lt 1980.
compute birth_decennium = 3.
else.
compute birth_decennium = 4.
end if.
***2. 将值标签应用于 birth_decennium。**
value labels birth_decennium 1 '50''s' 2 '60''s' 3 '70''s' 4 '80''s'.
***3. 检查 birth_decennium 的频率分布。** frequencies birth_decennium.
注意
只有 SPSS 转换命令才能在 DO IF
中使用。这不包括大多数生成输出的命令,如 FREQUENCIES
(频率分析)和 DESCRIPTIVES
(描述统计)。要在个案子集上使用此类命令,请参阅 FILTER(筛选), SPLIT FILE(拆分文件)和 SELECT IF(选择个案)。