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