我怎样才能让这个重复功能在 SPSS 中工作

问题描述 投票:0回答:1

我写了一段语法来识别 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
loops repeat spss
1个回答
0
投票

你可以这样写你的

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 获得有关嵌套循环的一些指导,以及 herehere 使用 SPSS 宏进行嵌套循环的示例。

© www.soinside.com 2019 - 2024. All rights reserved.