software - sas软件




SAS数据格式化(reverse proc transpose?) (2)

    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转置”,但是却被颠倒过来了。

请帮忙!


为什么不坚持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;

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

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;