subset - Transpose long to wide in SAS -


i have large data set (18 million observations) transpose subsetting based on 1 variable , creating 900 new variables out of sub/ets. example code , desired output format below: example data:

data long1 ;    input famid year faminc ;  cards ;  var1 96 40000  var1 97 40500  var1 98 41000  var2 96 45000  var2 97 45400  var2 98 45800  var3 96 75000  var3 97 76000  var3 98 77000  ;  run; 

code:

proc transpose data = data; famid; var faminc; run; 

desired output format: enter image description here

because of size of data set, i'm wondering if have use loop find first , last observations of each var , iteratively subset. know sql or proc achieve desired output format?

i'm not sure subsetting based on, if it's id, rather straightforward.

using example this ucla's page on proc sort, example work fine using modified input data:

data long;    input id year faminc ;    datalines ;  1 96 40000  1 97 40500  1 98 41000  2 96 45000  2 97 45400  2 98 45800  3 96 75000  3 97 76000  3 98 77000  ;   proc sort data=long;   year; run;  proc transpose data=long out=wide(drop=_name_) prefix=var;    year;    var faminc;  run; 

results

year var1  var2  var3  96   40000 45000 75000  97   40500 45400 76000  98   41000 45800 77000  

ucla's sas pages clearer sas's own regards using proc transpose in both directions. here 4 valuable links...

long wide proc transpose
wide long proc transpose

long wide data step
wide long data step