SPSS:当每个案例都有多个链接实例时,将 IF 函数与 REPEAT 结合使用

SPSS: using IF function with REPEAT when each case has multiple linked instances

我有这样一个数据集:

Case #|DateA |Drug.1|Drug.2|Drug.3|DateB.1 |DateB.2  |DateB.3 |IV.1|IV.2|IV.3
------|------|------|------|------|--------|---------|--------|----|----|----
1     |DateA1|    X |    Y |    X |DateB1.1|DateB1.2 |DateB1.3| 1  |  0 | 1
2     |DateA2|    X |    Y |    X |DateB2.1|DateB2.2 |DateB2.3| 1  |  0 | 1
3     |DateA3|    Y |    Z |    X |DateB3.1|DateB3.2 |DateB3.3| 0  |  0 | 1
4     |DateA4|    Z |    Z |    Z |DateB4.1|DateB4.2 |DateB4.3| 0  |  0 | 0

对于每个案例,都有关联变量,即 Drug.1 与 DateB.1 和 IV.1(指标变量.1)关联; Drug.2 与 DateB.2 和 IV.2 等链接

变量 IV.1 only = 1 if Drug.1 is the case of Drug.1 is the case (in this example, I want to analyze each receipt of Drug "X"), 依此类推其他 IV 变量。否则,如果该场景的药物不是 "X"。

,则 IV = 0

我想为收到药物 "X" 的每个实例计算 DateA 和 DateB 之间的差异。

例如在上面的示例中,我想计算一个新变量:

DateDiffA1_B1.1 = DateA1 - DateB1.1
DateDiffA1_B2.1 = DateA1 - DateB2.1
DateDiffA1_B1.3 = DateA1 - DateB1.3
DateDiffA1_B2.3 = DateA1 - DateB2.3
DateDiffA1_B3.3 = DateA1 - DateB3.3

我不确定这个新变量是否需要链接到药物的每个实例 "X" 至于其他变量,或者它是否可以是一个变量来计算每个实例的所有实例案例.

最终目标是计算每个病例在接受药物 "X" 时的日期差异 <= 2 周的次数。如果他们没有收到药物 "X",我不想计算日期差异。

我最终想比较接受药物 "X" 且日期差异 <= 2 周的患者与未接受药物的患者,因此使用另一个指示变量来帮助区分这些特定患者将是有益的.

我不确定解决此问题的最佳方法;我怀疑它需要使用 IV 变量组合使用 IF 和 REPEAT 函数,但我对 SPSS 和语法比较陌生,不确定应该如何编码以避免错误。

感谢您的帮助!

编辑:似乎我可能需要使用 IV 作为向量变量来循环遍历每种情况下的链接变量。我尝试了以下语法但无济于事:

DATASET ACTIVATE DataSet1.
vector IV = IV.1 to IV.3.
    loop #i = .1 to .3.
do repeat DateB = DateB.1 to DateB.3 
                / DrugDateDiff = DateDiff.1 to DateDiff.3.
    if IV(#i) = 1
    / DrugDateDiff = datediff(DateA, DateB, "days").
end repeat.
end loop.
execute.

其实不需要加vector和loop,一个内搞定DO REPEAT:

compute N2W=0.
do repeat DateB = DateB.1 to DateB.3 /IV=IV.1 to IV.3 .
    if IV=1 and datediff(DateA, DateB, "days")<=14 N2W = N2W + 1.
end repeat.
execute.

此语法将首先在计数变量 N2W 中放置一个零。然后它会遍历所有日期,只有当匹配的 IV 为 1 时,语法才会将它们与 dateA 进行比较,如果差异 <=2 周,则将计数加 1。

如果您希望在 IV 的 none 为 1 时保持计数变量缺失,而不是 compute N2W=0. 开始语法:

If any(1, IV.1 to IV.3) N2W=0.