Search code examples
sastranspose

Transpose dataset in SAS


I want to transpose a simple dataset as left, to become a dataset at the right. They are all numeric variables. Please also make the variable names as I put there (I have a lot of variables I want to follow this pattern), would prefer not to rename them by hand one by one if possible. Thank you!

enter image description here


Solution

  • Here is a simple approach. I added another id for demonstration. You can re-arrange the columns if you like.

    data have;
    input id Vistime v1 v2;
    datalines;
    1 1 2 5
    1 2 3 6
    1 3 4 7
    2 1 2 5
    2 2 3 6
    2 3 4 7
    ;
    
    proc transpose data=have out=temp;
       by id Vistime;
       var v1 v2;
    run;
    
    proc transpose data=temp delim=_ out=want(drop=_:);
       by id;
       var col1;
       id _name_ Vistime;
    run; 
    

    Result

    id v1_1 v2_1 v1_2 v2_2 v1_3 v2_3 
    1  2    5    3    6    4    7 
    2  2    5    3    6    4    7