你将如何在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中进行更改。如果参与者满足条件,我只是想为所有参与者案例设置一个值。
答案 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。