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',但它已经颠倒了。
请帮忙!
答案 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;