我正在尝试转换以下数据集。
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代码?
答案 0 :(得分:1)
可以使用两个转置步骤来实现数据形状转换。
data1
和data2
的值矢量化为单个列,同时保持date
和category
的关联。date
和category
作为标识变量,通过_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;