SPSS:搜索之前时间点的重复出现
SPSS: search for repeated occurrences at previous time points
我有这样一个数据集:
Case #|DateA |Drug.1|Drug.2|Drug.3|DateB.1 |DateB.2 |DateB.3 |RcvdDrugXTimeA
------|------|------|------|------|--------|---------|--------|--
1 |DateA1| X | Y | X |DateB1.1|DateB1.2 |DateB1.3| 0
2 |DateA2| X | Y | X |DateB2.1|DateB2.2 |DateB2.3| 1
3 |DateA3| Y | Z | X |DateB3.1|DateB3.2 |DateB3.3| 1
4 |DateA4| Z | Z | Z |DateB4.1|DateB4.2 |DateB4.3| 0
每个病例都有很多不同日期的收药记录。我的终点是在 Time A
收到药物 X,其中 Time
是根据每次收到药物的 DateA
和 DateB
之间的差异计算的。
如果一个病例在 Time A
收到药物 X,那么我想知道他们是否在之前的日期也收到了药物 X(以确定他们在 Time A
收到药物 X 是否是新的发生或重复发生)。
对于在 Time A
期间至少接受过一次药物 X 的每个病例,我有变量 RcvdDrugXTimeA = 1
。
如果他们在 Time A
之前确实收到了药物 X,那么我想要 RcvdPriorDrugX = 2
。如果他们没有,那么我想要 RcvdPriorDrugX = 1
。如果他们从未接受过药物 X,那么理想情况下 RcvdPriorDrugX = 0
.
在上面的示例中,案例 1 接受了药物 X 但不在 Time A
内,而案例 2 和 3 在 Time A
期间都接受了药物 X,因此这些案例 RcvdDrugXTimeA = 1
。假设这发生在他们两人身上 DateB.3
。这些案例之间的区别在于,案例 2 之前也接受过药物 X,因此在 Time A
时重复接受了药物 X。另一方面,案例 3 之前没有收到药物 X,因此在 Time A
收到药物 X 是该案例的新事件。我想创建一个函数来回顾那些在 Time A
期间满足接收药物 X 标准的案例的记录,并生成一个输出来告诉我这是否以前发生过或者是否是新的发生。我想排除那些他们从未在输出变量 Time A
收到药物 X 的情况。
不完全确定我是否理解您要执行的操作,因此以下语法涵盖了您提供的示例并达到了您描述的所需输出。如果示例(和我的语法)没有涵盖您需要在此过程中包含的其他可能性或注意事项,请告诉我。
首先我重新创建了您的示例数据集:
data list list/Case#(f1) DateA Drug.1 Drug.2 Drug.3 DateB.1 DateB.2 DateB.3 (7a10) RcvdDrugXTimeA(f1).
begin data
1 "DateA1" "X" "Y" "X" "DateB1.1" "DateB1.2" "DateB1.3" 0
2 "DateA2" "X" "Y" "X" "DateB2.1" "DateB2.2" "DateB2.3" 1
3 "DateA3" "Y" "Z" "X" "DateB3.1" "DateB3.2" "DateB3.3" 1
4 "DateA4" "Z" "Z" "Z" "DateB4.1" "DateB4.2" "DateB4.3" 0
end data.
现在我计算药物 X 的给药次数,然后如果 RcvdDrugXTimeA 为 0,则输出为 0,如果为 1,则如果 X 仅给药一次,则输出为 1,如果给药多次,则输出为 2不止一次:
count NofX=Drug.1 Drug.2 Drug.3("X").
compute RcvdPriorDrugX=RcvdDrugXTimeA + (NofX > 1).
我有这样一个数据集:
Case #|DateA |Drug.1|Drug.2|Drug.3|DateB.1 |DateB.2 |DateB.3 |RcvdDrugXTimeA
------|------|------|------|------|--------|---------|--------|--
1 |DateA1| X | Y | X |DateB1.1|DateB1.2 |DateB1.3| 0
2 |DateA2| X | Y | X |DateB2.1|DateB2.2 |DateB2.3| 1
3 |DateA3| Y | Z | X |DateB3.1|DateB3.2 |DateB3.3| 1
4 |DateA4| Z | Z | Z |DateB4.1|DateB4.2 |DateB4.3| 0
每个病例都有很多不同日期的收药记录。我的终点是在 Time A
收到药物 X,其中 Time
是根据每次收到药物的 DateA
和 DateB
之间的差异计算的。
如果一个病例在 Time A
收到药物 X,那么我想知道他们是否在之前的日期也收到了药物 X(以确定他们在 Time A
收到药物 X 是否是新的发生或重复发生)。
对于在 Time A
期间至少接受过一次药物 X 的每个病例,我有变量 RcvdDrugXTimeA = 1
。
如果他们在 Time A
之前确实收到了药物 X,那么我想要 RcvdPriorDrugX = 2
。如果他们没有,那么我想要 RcvdPriorDrugX = 1
。如果他们从未接受过药物 X,那么理想情况下 RcvdPriorDrugX = 0
.
在上面的示例中,案例 1 接受了药物 X 但不在 Time A
内,而案例 2 和 3 在 Time A
期间都接受了药物 X,因此这些案例 RcvdDrugXTimeA = 1
。假设这发生在他们两人身上 DateB.3
。这些案例之间的区别在于,案例 2 之前也接受过药物 X,因此在 Time A
时重复接受了药物 X。另一方面,案例 3 之前没有收到药物 X,因此在 Time A
收到药物 X 是该案例的新事件。我想创建一个函数来回顾那些在 Time A
期间满足接收药物 X 标准的案例的记录,并生成一个输出来告诉我这是否以前发生过或者是否是新的发生。我想排除那些他们从未在输出变量 Time A
收到药物 X 的情况。
不完全确定我是否理解您要执行的操作,因此以下语法涵盖了您提供的示例并达到了您描述的所需输出。如果示例(和我的语法)没有涵盖您需要在此过程中包含的其他可能性或注意事项,请告诉我。
首先我重新创建了您的示例数据集:
data list list/Case#(f1) DateA Drug.1 Drug.2 Drug.3 DateB.1 DateB.2 DateB.3 (7a10) RcvdDrugXTimeA(f1).
begin data
1 "DateA1" "X" "Y" "X" "DateB1.1" "DateB1.2" "DateB1.3" 0
2 "DateA2" "X" "Y" "X" "DateB2.1" "DateB2.2" "DateB2.3" 1
3 "DateA3" "Y" "Z" "X" "DateB3.1" "DateB3.2" "DateB3.3" 1
4 "DateA4" "Z" "Z" "Z" "DateB4.1" "DateB4.2" "DateB4.3" 0
end data.
现在我计算药物 X 的给药次数,然后如果 RcvdDrugXTimeA 为 0,则输出为 0,如果为 1,则如果 X 仅给药一次,则输出为 1,如果给药多次,则输出为 2不止一次:
count NofX=Drug.1 Drug.2 Drug.3("X").
compute RcvdPriorDrugX=RcvdDrugXTimeA + (NofX > 1).