Again: Please post data in usable form, so that we have something to work with. Proc transpose struggles here, because the combination of Id, State and Week is not unique. Using a data step seems to be the easier way to solve the problem.
Untested:
data want;
set have;
length Var $ 2;
array vars var1 - var3;
do i = 1 to dim(vars);
if not missing(vars[i]) then do;
Var = vars[i];
output;
end;
end;
drop Var1 - Var3 i;
run;