Use arrays, you can check the maximum iterations before, for my code I just assumed 1:
data want;
set have;
by house_id;
array id_{1} $200;
array dob_{1} $200;
if not(first.house_id) then do;
id_{1}=id;
dob_{1}=dob;
end;
if last.house_id then output;
run;
Of course you will likely have a lot more than 1, so you would need to calculate how many and not hardcode in. If you do only have one, then just retain the two extra variables. You could also just do two proc transposes and merge them back on.