我试图写一个循环来标记两个标准。首先如果延迟(timeperiod)之间的差异- timeperiod>=4,然后比较两个时间段之间的代码是否相同或不同。我想在每个patientID上运行循环,直到满足其中一个条件。
TIA !
。数据
patientID, timeperiod, combined
wh7,1, diag1_diag2_diag3
wh7, 4, diag1_diag2_diag3_diag4
wh7, 10, diag1_diag2
wh7 15, diag4_diag10
wh4, 2, diag5_diag11_diag16
wh4, 4, diag5_diag11
使用BY
组处理和自动FIRST.
变量来检测组何时发生变化。另外,要明白SAS中的and
表达式在求值过程中不会走捷径——所有的复合表达式都被完全求值。
你的DATA Step应该类似于
data want;
set have;
by patientID;
if not first.patientID and dif(time_period) >=4 and combined ne lag(combined) then
flag = 1;
else
flag = 0;
run;
注:DIF(x)
相当于x - LAG(x)