我已经给了一个任务来解决,我对这种编程语言很陌生。当标志为0时,我必须选择下一个立即记录,,前提是标志变量具有三个或更多连续记录,其值为1.我已经持续了好几个小时。以下是datastep。请建议。SAS任务。需要有条件地挑选记录
data two;
input usubjid visit flag;
cards;
1001 1 1
1001 2 1
1001 3 0
1001 4 1
1001 5 1
1001 6 1
1002 1 1
1002 2 1
1002 3 0
1002 4 1
1002 5 1
1003 1 0
1003 2 1
1003 3 1
1003 4 1
1003 5 1
;
run;
输出将是: -
usubjid visit flag
1001 4 1
1003 2 1
这是我到目前为止已经试过。
proc sort data = two ;
by usubjid ;
run;
proc transpose data = two out = tran ;
by usubjid ;
id visit ;var flag ;
run;
data b ;
set tran ;
if ((_1 = _2) and (_1 = _3)) or ((_2 = _3) and (_2 = _4)) or ((_3 = _4) and ( _3 = _5)) or
((_4 = _5) and (_4 = _6)) ;
run;
proc sort data = b ;
by usubjid ;
run;
data c ;
merge a (in = a) b (in = b) ;
by usubjid ;
if a ;
run;