You asked for output of first observations by var1 and var2.
Did you mean first.var1 and first.var2 ?
I assumed no.
In this case the output should contain 3 obs:
var1 var2 var4
1 1 100
2 1 400
2 2 500
@ballardw's solution miss OUTPUT statement. As is you will get the all input obs in output.
So the solution should be:
data mydata3;
set mydata2;
by var1 var2;
if FIRST.var2 then do;
var4=var3;
output;
end;
drop var3;
run;
Alternative solution:
data mydata3(rename=(var3=var4));
set mydata2;
by var1 var2;
if FIRST.var2 then output;
run;
... View more