如何在 SAS 中转置 table

How to transpose a table in SAS

我有以下 table:

ID VAR1 VAR2 VAR3 VALID_FROM VALID_TO
ABC1 0 0 1 01JAN2010 01JAN2011
ABC1 1 0 1 01JAN2011 01JAN2012
ABC2 0 0 1 01JAN2010 01JAN2011
ABC2 1 0 0 01JAN2011 01JAN2012
ABC2 0 0 0 01JAN2012 01JAN2013

我想像这样转置它:

ID VAR VALUE VALID_FROM VALID_TO
ABC1 VAR1 0 01JAN2010 01JAN2011
ABC1 VAR2 0 01JAN2010 01JAN2011
ABC1 VAR3 1 01JAN2010 01JAN2011
ABC1 VAR1 1 01JAN2011 01JAN2012
ABC1 VAR2 0 01JAN2011 01JAN2012
ABC1 VAR3 1 01JAN2011 01JAN2012
ABC2 VAR1 0 01JAN2010 01JAN2011
ABC2 VAR2 0 01JAN2010 01JAN2011
ABC2 VAR3 1 01JAN2010 01JAN2011
ABC2 VAR1 1 01JAN2011 01JAN2012
ABC2 VAR2 0 01JAN2011 01JAN2012
ABC2 VAR3 0 01JAN2011 01JAN2012
ABC2 VAR1 0 01JAN2012 01JAN2013
ABC2 VAR2 0 01JAN2012 01JAN2013
ABC2 VAR3 0 01JAN2012 01JAN2013

这是第一个 table 的可重现示例:

data have;
infile datalines delimiter=",";
input ID :. VAR1 VAR2 VAR3 VALID_FROM:date9. VALID_TO:date9.;
format VALID: date9.;
datalines;
ABC1,0,0,1,01JAN2010,01JAN2011
ABC1,1,0,1,01JAN2011,01JAN2012
ABC2,0,0,1,01JAN2010,01JAN2011
ABC2,1,0,0,01JAN2011,01JAN2012
ABC2,0,0,0,01JAN2012,01JAN2013
;
run;

作为 SAS 的新手,我真的不知道如何进行?阵列? proc 转置 ?

我会使用 PROC TRANSPOSE,但它也可以通过数据步骤完成。

proc transpose data=have out=want(rename=(col1=value)) name=var;
   by id valid_:;
   var var:;
   run;