2013-11-14 44 views
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 

我有一个像上面的数据,想导入和重塑数据转换成什么样子如下:SAS数据格式(反向PROC转?)

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转'但它是相反的。

请帮忙!

回答

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; 
+0

哦g。有用。我认为这只是一种方式,而不是另一种方式。非常感谢你。 –

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; 
+0

乔,谢谢你的回复。有没有什么办法可以做到这一点,而不用数组语句指定变量名? –

+0

这完全取决于您的数据。你可以说'数组qs Q';'包含所有的Q;你可以说'array qs _numeric_;'包含所有数字变量。 – Joe