0
    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”,但它是相反的。

请帮忙!

4

2 回答 2

3

为什么不坚持使用 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;
于 2013-11-14T17:35:14.183 回答
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;
于 2013-11-14T15:34:55.197 回答