Without sample data I couldn't write test this, so consider it pseudo code.
proc sort data = mytable;
by ID;
run;
proc sql;
create table Var3ORVar2 as
select ID,MAX(VAR4 = 1 or VAR4 = 2) as VAR4_1OR2,
max(var3) as BVAR3,
max(var2) as MaxVar2,
(VAR5 in ('A','B') as AVAR5
from mytable
group by ID;
quit;
data results(keep = ID BVAR3 AVAR5 VAR2 VAR4 VAR6 VAR7);
merge mytable Var3ORVar2;
by ID;
if VAR4_1OR2 then do;
if var3 = MaxVar3 then output;
end;
else do;
BVAR3 = var3;
if var2 = MaxVar2 then output;
end;
run;
It could also be done in a single pass through the data using arrays or hashes, but I think the two step approach is best in this case.
Curtis
... View more