如何使用proc tranpose转换此数据集?

时间:2019-04-16 16:39:25

标签: sas transpose proc

我正在尝试转换以下数据集。

   Date        Data1      Data2       Category 
 Dec-2012     59          12          Red
 Dec-2012     31          91          Blue 
 Jun-2014     11          71          Red
 Aug-2015     51          85          Yellow
 Aug-2015     16          66          Blue

我想将此数据转置为以下

 Date    | RedData1| RedData2 | BlueData1 |BlueData2 |YellowData1 | YellowData2

 Dec-2012 |   59   |     12   |     31    |    91    |            |
 Jun 2014 |  11    |     71   |           |          |            |
 Aug 2015 |        |          |     16    |    66    |     51     |     85

如何使用proc sql执行此操作?还是其他任何SAS代码?

1 个答案:

答案 0 :(得分:1)

可以使用两个转置步骤来实现数据形状转换。

  • 第1步-逐行旋转以将data1data2的值矢量化为单个列,同时保持datecategory的关联。
  • 步骤2-使用datecategory作为标识变量,通过_name_旋转数据值,依次生成输出列名。

示例:

data have;
input Date monyy7. Data1 Data2 Category $;
format date monyy7.;
datalines;
Dec2012     59          12          Red
Dec2012     31          91          Blue 
Jun2014     11          71          Red
Aug2015     51          85          Yellow
Aug2015     16          66          Blue
run;

proc transpose data=have out=step1;
   by date category notsorted;
   var data1 data2;
run;   

proc transpose data=step1 out=want;
   by date;
   id category _name_;
   var col1;
run;