Search code examples
sastranspose

Reshape SAS dataset


If I have a dataset structured like this:


year  quarter var_1  var_2  var_3 
2000    1      5      8      1
2000    2      3      11     5
2000    3      8      2      10


How could I reshape it to this:


year  quarter  variable   value
2000    1        var_1     5
2000    2        var_1     3
2000    3        var_1     8
2000    1        var_2     8
2000    2        var_2     11
2000    3        var_2     2
2000    1        var_3     1
2000    2        var_3     5
2000    3        var_3     10

I've tried some different things with proc transpose but can't figure it out exactly.


Solution

  • Transpose by year quarter.

    proc transpose data = have2
                   out  = want(rename=(COL1=value) )
                   name = variable
                   ;
        by row year quarter;
        var var:;
    run;
    
    year    quarter variable    value
    2000    1       var_1       5  
    2000    1       var_2       8
    2000    1       var_3       1
    2000    2       var_1       3
    2000    2       var_2       11
    2000    2       var_3       5
    2000    3       var_1       8
    2000    3       var_2       2
    2000    3       var_3       10