我写了一段语法来识别 AB 是否被用于 AE 类型。但是,当我运行语法时,它说它不起作用,这让我发疯。有人知道怎么做吗?我已经确保所有变量在数据中都彼此相邻,所以这应该不是问题。
do repeat AE_trial_numberedN = AE_trial_numberedN1 to AE_trial_numberedN134 / Start_med = Start_med1 to Start_med39 / i_aestdt = i_aestdt1 to i_aestdt134 / i_aeendt = i_aeendt1 to i_aeendt134 /
ABused= ABused1 to ABused39 / AB_AE_reln = AB_AE_reln1 to AB_AE_reln134.
do if (AE_trial_numberedN=1 & start_med > i_aestdt & start_med < i_aeendt and ABused > 0).
compute AB_AE_reln=1.
else if (AE_trial_numberedN=1 & start_med > i_aestdt & start_med < i_aeendt and ABused = 0).
compute AB_AE_reln=11.
else if (AE_trial_numberedN=2 & start_med > i_aestdt & start_med < i_aeendt and ABused > 0).
compute AB_AE_reln=2.
else if (AE_trial_numberedN=2 & start_med > i_aestdt & start_med < i_aeendt and ABused = 0).
compute AB_AE_reln=12.
else if (AE_trial_numberedN=3 & start_med > i_aestdt & start_med < i_aeendt and ABused > 0).
compute AB_AE_reln=3.
else if (AE_trial_numberedN=3 & start_med > i_aestdt & start_med < i_aeendt and ABused = 0).
compute AB_AE_reln=13.
else if (AE_trial_numberedN=4 & start_med > i_aestdt & start_med < i_aeendt and ABused > 0).
compute AB_AE_reln=4.
else if (AE_trial_numberedN=4 & start_med > i_aestdt & start_med < i_aeendt and ABused = 0).
compute AB_AE_reln=14.
else if (AE_trial_numberedN=5 & start_med > i_aestdt & start_med < i_aeendt and ABused > 0).
compute AB_AE_reln=5.
else if (AE_trial_numberedN=5 & start_med > i_aestdt & start_med < i_aeendt and ABused = 0).
compute AB_AE_reln=15.
else if (AE_trial_numberedN=6 & start_med > i_aestdt & start_med < i_aeendt and ABused > 0).
compute AB_AE_reln=6.
else if (AE_trial_numberedN=6 & start_med > i_aestdt & start_med < i_aeendt and ABused = 0).
compute AB_AE_reln=16.
else if ( AE_trial_numberedN=7|AE_trial_numberedN=8|AE_trial_numberedN=9 | AE_trial_numberedN=10|AE_trial_numberedN=11|AE_trial_numberedN=12 | AE_trial_numberedN=13|AE_trial_numberedN=14 |AE_trial_numberedN=15 | AE_trial_numberedN=16|AE_trial_numberedN=17 |AE_trial_numberedN=18 | AE_trial_numberedN=19|AE_trial_numberedN=20 |AE_trial_numberedN=21 | AE_trial_numberedN=22 & start_med > i_aestdt & start_med < i_aeendt and ABused > 0).
compute AB_AE_reln=7.
else if (AE_trial_numberedN=7|AE_trial_numberedN=8|AE_trial_numberedN=9 | AE_trial_numberedN=10|AE_trial_numberedN=11|AE_trial_numberedN=12 | AE_trial_numberedN=13|AE_trial_numberedN=14 |AE_trial_numberedN=15 | AE_trial_numberedN=16|AE_trial_numberedN=17 |AE_trial_numberedN=18 | AE_trial_numberedN=19|AE_trial_numberedN=20 |AE_trial_numberedN=21 | AE_trial_numberedN=22 & start_med > i_aestdt & start_med < i_aeendt and ABused = 0).
compute AB_AE_reln=17.
end if.
end repeat
你可以这样写你的
do if
内容:
do if start_med > i_aestdt & start_med < i_aeendt & and ABused >= 0.
recode AE_trial_numberedN (1 thr 6=copy)(7 thr 21=7) into AB_AE_reln.
if ABused = 0 AB_AE_reln=AB_AE_reln+1.
end if.
另一方面,您的
do repeat
无法工作,因为所有变量列表必须具有相同的长度,而您的变量列表有 134 个,有些有 39 个。看起来您需要的输出比 AB_AE_reln1 to AB_AE_reln134
更复杂,因此您必须决定它的实际外观,然后通过创建一些嵌套循环来获得它。您可以在 here 获得有关嵌套循环的一些指导,以及 here 和 here 使用 SPSS 宏进行嵌套循环的示例。