我有一个数据集:
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的情况。
答案 0 :(得分:1)
我不完全确定我理解您要执行的操作,因此以下语法涵盖了您提供的示例并达到了您所描述的所需输出。如果示例(和我的语法)没有涵盖您需要在此过程中包含的其他可能性或注意事项,请告知我们。
首先我重新创建你的示例数据集:
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).