SAS使用重复从宽到长的转置
我将转置下表: X Y1 Y2 Y3 a 12 3 a 2 3 4 b 7 8 9 到 xy a 1 a 2 a 3 a 2 a 3 a 4 b 7 b 8 b 9 我试过这个密码SAS使用重复从宽到长的转置,sas,transpose,Sas,Transpose,我将转置下表: X Y1 Y2 Y3 a 12 3 a 2 3 4 b 7 8 9 到 xy a 1 a 2 a 3 a 2 a 3 a 4 b 7 b 8 b 9 我试过这个密码 PROC TRANSPOSE DATA=table1 OUT=table2; BY X; RUN; 然而,它给了我这个输出 X COL1 COL2 a 12 a 23 a 3 4 b 7 b 8 b 9 有人知道怎么弄到我需要的桌子吗 谢谢你的任何想法,谢谢 您可以使用以下代码,它添加一行,然后根据行进行转置。因为
PROC TRANSPOSE DATA=table1 OUT=table2;
BY X;
RUN;
然而,它给了我这个输出
X COL1 COL2
a 12
a 23
a 3 4
b 7
b 8
b 9
有人知道怎么弄到我需要的桌子吗
谢谢你的任何想法,谢谢 您可以使用以下代码,它添加一行,然后根据行进行转置。因为行号是唯一的
data have;
input X $ Y1 Y2 Y3;
datalines;
a 1 2 3
a 2 3 4
b 7 8 9
;
run;
data have;
set have;
row=_n_;
run;
PROC TRANSPOSE DATA=have OUT=want(rename=(COL1=Y) drop=_NAME_ row);
by row x;
RUN;
proc print data=want; run;
像下面这样的方法应该可以奏效
data want;
set have;
array name(*) Y1--Y3;
do i = 1 to dim(name);
Y=name[i];
output;
end;
Drop y1 y2 y3 i;
run;
您可以/应该使用转置步骤中的“数据集选项”重命名和删除。@data null。。谢谢你的建议。更新代码。