SAS 创建标识符



我有一个数据集,患者在一个治疗阶段有多个疗程。数据集如下所示:

C 1 1 0  
C 0 0 1  
C 1 1 0  
C 0 0 1

前两行:患者从第 1 行开始,在第 2 行结束。这是患者C的第一个疗程。

后两行:患者 C 再次从第 3 行开始,在第 4 行结束。

如何使用 SAS 中的第一个和最后一个语句为这两个课程创建标识符。

预期输出应如下所示;

C 1 1 0  23
C 0 0 1  23
C 1 1 0  24
C 0 0 1  24
C 1 1 1  25

一个疗程的计数应该相同,并且在同一患者的课程中不同。谢谢。

假设第三个变量,不管它是什么,是你的"最终状态",以下工作。 可能不是最简单的方法,但希望清楚。我不知道在这种情况下,除了 ID 切换时,第一个/最后一个是否真的会有所帮助。

想法是查找 V3=1,然后将标志设置为 1。如果标志为 1,则下一条记录递增并重置标志,并继续该过程。保留用于跨行保存"标志"和"路线"的值。

data have;
input ID $ v1-v3;
cards;
C 1 1 0
C 0 0 1
C 1 1 0
C 0 0 1
D 1 0 0
D 0 1 0
D 0 0 1
;
run;
data want;
set have;
BY ID;
retain flag 0 course;
if first.ID then do;
    Course=1;
    flag=0;
end;
if flag=1 then do;
    course=course+1;
    flag=0;
end;
else if v3=1 and flag=0 then flag=1;
run;
proc print;
run;

最新更新