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.
我有这样一个数据集:
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.