执行循环以在SAS中查找匹配项

执行循环以在SAS中查找匹配项,sas,Sas,我想创建RT1到RT(last)的列,其中包含TSN之间的差异。EV应为HIS,之前的EV应为HIS或OH,然后RT2=TS2-TS1 ELSE如果EV1为ne OH,则EV2=TS1 ELSE O。 EV(拥有HIS)应与减量EV匹配以找到匹配(OH或HIS),如果找到匹配,则TS的差异,否则转到下一减量以找到匹配 SlN EV1 EV2 EV3 EV4 EV5 EV6 EV7 EV8 TS1 TS2 TS3 TS4 TS5 TS6 TS7 TS8 1 OH HIS HIS OH OH

我想创建RT1到RT(last)的列,其中包含TSN之间的差异。EV应为HIS,之前的EV应为HIS或OH,然后RT2=TS2-TS1 ELSE如果EV1为ne OH,则EV2=TS1 ELSE O。 EV(拥有HIS)应与减量EV匹配以找到匹配(OH或HIS),如果找到匹配,则TS的差异,否则转到下一减量以找到匹配

SlN EV1 EV2 EV3 EV4 EV5 EV6 EV7 EV8 TS1 TS2 TS3 TS4 TS5 TS6 TS7 TS8
1   OH  HIS HIS OH  OH  HIS OH  HIS 2   3   5   8   10  15  17  19
2   HIS HIS OH                      5   6   9                   
3   HIS OH                          1   3                       
4   HIS                             2                           
5   OH                              3                           
6   OH  HIS                         2   5                       
7   HIS HIS                         2   4                       
8   OH  OH                          3   4   6   9   9           
9   HIS HIS OH  HIS HIS             2   5   7                   
10  OH  OH  HIS                             
例如:SL:1R1=0(因为EV1NE-HIS),R2=TS2-TS1(EV2=HIS,EV1=HIS或OH),R3=TS3-TS2(EV3=HIS,EV2=HIS),R4=TS6-TS5(EV4 ne-HIS,EV5 ne-HIS So,EV6=HIS(找到匹配项))

输出样本:

SLN R1  R2  R3  R4  R5
1   2   1   2   5   2
2   5   1           
3   1               
4   2               
5   0               
6   0   3           
7   2   3           
8   0               
9   3   1   3   0   
10  0   2           

你是不是在想这样的事

DATA dataout;
SET datain;

ARRAY Rvar[8] r1-r8
        Evar[8] EV1-EV8
        TsVar[8] TS1-TS8;

DO i=1 TO 8;
    IF i=1 AND EV1="HIS" THEN Rvar[i]=TS1; 
    ELSE IF Evar[i]="HIS" AND Evar[i-1] IN ("HIS", "OH") THEN Rvar[i] = TsVar[i] - TsVar[i-1];
    ELSE Rvar[i]=.;
END;
RUN;