Hi,
Let's assume that your dataset is called WORK.MYDATA and that it has the 3 variables that you showed. This PROC TRANSPOSE step would create a dataset in the form that you wanted. The only thing you might have to do is delete the automatic variable _NAME_ that PROC TRANSPOSE creates.
[pre]
proc transpose data=mydata out=d_trans;
by id;
id f;
var g;
run;
options nocenter;
proc print data=d_trans;
title 'transposed data';
run;
[/pre]
And the results would be:
[pre]
transposed data
Obs id _NAME_ x y z
1 1 g a b c
2 2 g d e f
3 3 g g h i
[/pre]
For more help with PROC TRANSPOSE, you might consider reading the documentation on PROC TRANSPOSE and/or contacting Tech Support.
cynthia