Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops SPSS:当每个案例都有多个链接实例时,使用带REPEAT的IF函数_Loops_If Statement_Linked List_Repeat_Spss - Fatal编程技术网

Loops SPSS:当每个案例都有多个链接实例时,使用带REPEAT的IF函数

Loops SPSS:当每个案例都有多个链接实例时,使用带REPEAT的IF函数,loops,if-statement,linked-list,repeat,spss,Loops,If Statement,Linked List,Repeat,Spss,我有这样一个数据集: 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 |

我有这样一个数据集:

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等相关

如果Drug.1是我要分析的情况,变量IV.1仅=1(在本例中,我要分析每个药物“X”的收据),依此类推其他IV变量。否则,如果该方案的药物不是“X”,则IV=0

我想计算每个接收到药物“X”的实例的DateA和DateB之间的差异

e、 g.在上述示例中,我想计算一个新变量:

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”的每个实例相关联,或者它是否可以是一个单独的变量来统计每个病例的所有实例


最终目标是计算每个案例的日期差为的次数。实际上,不需要添加向量和循环,只需在一次
内重复即可:

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.

谢谢你的回答,eli-k!我使用了您的代码,尝试包含一个额外的变量,该变量给出了绝对datediff,然后进入计数步骤,每次IV.1到IV.3=1时,我都要创建一个变量,即如果每个IV=1,则从DrugDateDiff.1到DrugDateDiff.3。(1)您使用了
DrugDateDiff
两次-一次作为计数变量,一次使用
DO REPEAT'命令。换一个就行了。(2) 删除
IF`命令中的“/”。
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.
If any(1, IV.1 to IV.3) N2W=0.