Search code examples
sasmultiple-columnstransposeproc

PROC TRANSPOSE value column while retaining dates and Hour End


I have data structured like this:

Meter_ID   Date         HourEnd    Value
100        12/01/2007       1       986
100        12/01/2007       2       992
100        12/01/2007       3       1002
200        12/01/2007       1       47
200        12/01/2007       2       45
200        12/01/2007       3       50
300        12/01/2007       1       32
300        12/01/2007       2       37
300        12/01/2007       3       40

And would like to transpose the information so that I end up with this:

Date       HourEnd        Meter100    Meter200     Meter300
12/01/2007     1             986         47           32
12/01/2007     2             992         45           37
12/01/2007     3            1002         50           40

I have tried numerous PROC TRANSPOSE options and variations and am confusing myself. Any help would be greatly appreciated!


Solution

  • You need to SORT.

    data have;
       infile cards firstobs=2;
       input Meter_ID   Date:mmddyy. HourEnd    Value;
       format date mmddyy10.;
       cards;
    Meter_ID   Date         HourEnd    Value
    100        12/01/2007       1       986
    100        12/01/2007       2       992
    100        12/01/2007       3       1002
    200        12/01/2007       1       47
    200        12/01/2007       2       45
    200        12/01/2007       3       50
    300        12/01/2007       1       32
    300        12/01/2007       2       37
    300        12/01/2007       3       40
    ;;;;
       run;
    proc print;
    proc sort data=have;
       by date hourend meter_id;
       run;
    proc print;
       run;
    proc transpose prefix="Meter"n;
       by date hourend;
       id meter_id;
       var value;
       run;
    proc print;
       run;
    

    enter image description here