Post test data in the form of a datastep in a code window!!
As such I am not typing that in. Why should the third row be used to populate the first one? I can see no logical reason. Post something which actually reflects the problem. Now at a guess, what you can do is to first create a distinct list of Name + Value pairs which are not missing, then merge that back onto the data e.g:
proc sort data=have out=inter (rename=(value4=rep)) nodupkey;
by value3 value4;
where value3 ne "" and value4 ne "";
run;
data want;
merge have inter;
by value3;
if value4="" then value4=rep;
run;
... View more