据我所知,IF
在用于执行单个条件转换时效率更高。
对于定义条件的多个IF
语句,使用RECODE
命令通常更有效。
我在SPSS中有以下命令:
IF (EDUC>12 AND GENDER='M')GROUP=1.
IF (EDUC<12 AND GENDER='M')GROUP=2.
IF (EDUC>12 AND GENDER='F')GROUP=3.
IF (EDUC<12 AND GENDER='F')GROUP=4.
EXECUTE.
现在我尝试将上述命令记录为:
COMPUTE GROUP = 0
RECODE GROUP (EDUC>12 AND GENDER='M'=1)(EDUC<12 AND GENDER='M'=2)(EDUC>12 AND GENDER='F') (EDUC<12 AND GENDER='F').
EXECUTE.
但它显示错误。
我如何重新编码上述命令?还是可以重新编码?
答案 0 :(得分:1)
RECODE
只接受1到1的映射,旧值接受新值,它不接受您指定的条件语句。在这种情况下,您可能会考虑DO IF
阻止。 (希望没有人有12个教育!)
DO IF (EDUC>12 AND GENDER='M').
COMPUTE GROUP=1.
ELSE IF (EDUC<12 AND GENDER='M').
COMPUTE GROUP=2.
ELSE IF (EDUC>12 AND GENDER='F').
COMPUTE GROUP=3.
ELSE IF (EDUC<12 AND GENDER='F').
COMPUTE GROUP=4.
END IF.
这会逐个评估IF
语句,因此,如果您有100万条记录属于(EDUC>12 AND GENDER='M')
而只有少数记录属于其他类别,那么对于这百万个案例,它会评估第一个条件为true,不会评估后续的IF
语句(在多行上写出等效的IF
不正确)。