/*建立测试数据集test*/
data test;
do x=1 to 100;
output;
end;
run;
/*将数据集test(1个变量)改变存储形式,折叠成数据集test1(4个变量)*/
data test1;
array y[4];
/*数据集test有nobs个观测,折叠后的test1有ceil(nobs/4)个观测*/
do i=1 to ceil(nobs/4);
/*test中的4个观测,变成test1中的1个观测*/
do j=1 to 4;
k=(i-1)*4+j;
/*利用"nobs=nobs"获得数据集test观测数nobs,并且每次data循环读取第k条观测*/
set test point=k nobs=nobs;
y[j]=x;
end;
output;
end;
stop;
keep y:;
run;
/*test1转置成test2*/
proc transpose data=test1 out=test2(keep=col:);
run;
/************************************************/
/****或者****/
/************************************************/
/*test基础上形成新变量j(其值1、2、3、4循环),新数据集为test3*/
data test3;
set test;
j=mod(_n_,4);
if j=0 then j=4;
run;
/*根据j排序,为转置做准备*/
proc sort data=test3;
by j;
run;
/*将test3直接转置成所需格式,形成test4*/
proc transpose data=test3 out=test4(keep=col:);
by j;
var x;
run;