嵌套if中的SPSS变量范围

时间:2017-09-16 13:04:27

标签: spss

你将如何在spss中执行以下操作:

var participant_number = 0.

DO IF (condition =1 AND trial_order = 1).
    participant_number = ppnr.
    DO IF (ppnr = participant_number).
        COMPUTE start_condition = 1.
    END IF.
ELSE.
    participant_number = ppnr.
    DO IF (ppnr = participant_number).
        COMPUTE start_condition = 0.
    END IF.
END IF.

需要为内部循环定义变量participant_number,而不是在整个内部if中进行更改。如果参与者满足条件,我只是想为所有参与者案例设置一个值。

1 个答案:

答案 0 :(得分:1)

在SPSS中,一般来说,(有例外,但现在让事情变得简单),变量是全局的。如果它们来自数据集,则可以在语法中使用它们而不必担心超出范围。 请注意,在使用之前,需要首先“计算”/创建变量。您可以使用语法或在“数据”窗口中手动执行此操作。

如果要执行多次转换,

DO IF非常有用。否则,就像

这样的结构

IF [condition][transformation]. EXECUTE.

会做到这一点。

如果我理解了你的目标,你可以像这样重写代码:

***create a temporary variable, to check each case if your condition is met. Set the temporary variable to 0 as default value.
compute tempvar=0.
***then set it to 1, if condition is met.
***This is at case level, not participant level.
if condition=1 and trial_order=1 tempvar=1.
exe.
***aggregate the temp variable, from case level at participant level.
***for each participant (ppnr), it will look at all values of tempvar, and set the start_condition as the maximum of tempvar - either 0 or 1.
AGGREGATE
  /OUTFILE=* MODE=ADDVARIABLES
  /BREAK=ppnr
  /start_condition=MAX(tempvar).

***optional.
delete variable tempvar.

最后,如果参与者的每个案例的start_condition满足该参与者的至少一个案例,则(condition =1 AND trial_order = 1)将为1;否则,它将为0。