data sda; input ptno visit weight; format ptno z3. ; cards; 1 1 122 1 2 . 1 3 . 1 4 123 2 1 156 2 3 . 3 1 112 3 2 . 4 1 . 4 2 123 4 3 . ; run; data all; format ptno z3.; do i=1 to 4; do j=1 to 4; ptno=i; visit=j; output; end; end; drop i j; run; proc sort data=sda; by ptno visit; run; proc sort data=all; by ptno visit; run; data final (drop=tempval); retain tempval 0; merge sda(in=b) all (in=val); by ptno visit ; if val; if weight eq . then weight=tempval; else tempval=weight; run; Output is as below 001 1 122 001 2 122 001 3 122 001 4 123 002 1 156 002 2 156 002 3 156 002 4 156 003 1 112 003 2 112 003 3 112 003 4 112 004 1 112 004 2 123 004 3 123 004 4 123
... View more