我有这样一个数据集:
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的情况。
发布于 2017-02-13 18:35:46
不完全确定我是否理解您想要做的事情,所以下面的语法涵盖了您给出的示例,并达到了您所描述的希望输出。如果示例(和我的语法)不包括您需要在过程中包含的其他可能性或注意事项,请告诉我。
首先,我重新创建您的示例数据集:
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,如果X只给药一次,输出为1,如果多次使用,则为2:
count NofX=Drug.1 Drug.2 Drug.3("X").
compute RcvdPriorDrugX=RcvdDrugXTimeA + (NofX > 1).https://stackoverflow.com/questions/42125237
复制相似问题