SAS创建标识符

SAS创建标识符,sas,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 同一患者的每一疗程的计数应相同且不同。 谢谢

我有一个数据集,患者在治疗阶段有多个疗程。 数据集看起来像:

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
同一患者的每一疗程的计数应相同且不同。
谢谢

假设第三个变量,不管它是什么,都是你的“结束状态”,那么下面的方法就行了。可能不是最简单的方法,但希望很清楚。我不知道First/Last在这种情况下是否真的有帮助,除非ID切换

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

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;

按组逐步搜索数据。这应该足够了,但两门课的人数仍然相同。它应该有不同的标识您的问题非常不清楚,如果您添加了预期的输出以及您迄今为止所尝试的内容,这将非常有帮助。从您提供的数据中,我看不出如何区分行来确定课程标识,以及您尝试过的无效代码。如果你发布你期望的输出,这会有所帮助。