SAS数据格式化(反向proc转置?)

时间:2013-11-14 15:33:36

标签: sas

    Q1  Q2  Q3   Q4
A   1   2   3   4
B   1   2   3   4
C   1   2   3   
D   1   2       
E   1   2   3   4

我有上面的数据,想要将数据导入并重塑为下面的数据:

    Qtr var1
A   Q1  1
A   Q2  2
A   Q3  3
A   Q4  4
B   Q1  1
B   Q2  2
B   Q3  3
B   Q4  4
C   Q1  1
C   Q2  2
C   Q3  3
D   Q1  1
D   Q2  2
E   Q1  1
E   Q2  2
E   Q3  3
E   Q4  4

它似乎是一个'proc transpose',但它已经颠倒了。

请帮忙!

2 个答案:

答案 0 :(得分:2)

为什么不坚持使用PROC TRANSPOSE。它可以做多到长,也可以做多到宽。

data have;
input ID $ Q1  Q2  Q3   Q4;
datalines;
A   1   2   3   4
B   1   2   3   4
C   1   2   3   .
D   1   2   .   . 
E   1   2   3   4
;
run;

proc transpose data=have out=want name=Qtr;
by ID;
run;

答案 1 :(得分:1)

基本概念是数据步骤数组。

data want;
set have;
array qs q1-q4;
do _t = 1 to dim(qs);
  quarter=vname(qs[_t]);
  var1=qs[_t];
  output;
end;
drop _t;
run;