data final(drop=x varn max);
retain max;
length x_list $50;
do _n_=1 by 1 until(last.id);
set raw end=eof;
by id;
x_list=catx(' ',strip(x_list),strip(x));
end;
varn=count(strip(x_list),' ')+1;
max=max(max,varn);
if eof then call symputx('varn',max);
run;
data final(drop= x_list i);
set final;
array arr{*} x1-x&varn;
do i=1 to &varn;
arr(i)=input(scan(x_list,i),best.);
end;
run;[/code:1wi9y0qq]作者: shiyiming 时间: 2009-11-6 18:14 标题: Re: 一个困扰我的很难得数据处理问题 [code:2oa01swx]data a;
input n id X1 X2@@;
cards;
1 1 2 3
1 2 3 3
1 3 3 4
2 1 2 3
2 2 3 4
;
run;
proc transpose data=a out=ax1(drop=_name_) prefix=x1_;
var x1;
id id;
by n;
run;
proc transpose data=a out=ax2(drop=_name_) prefix=x2_;
var x2;
id id;
by n;
run;
data aa;
merge ax1 ax2;
run;
[/code:2oa01swx]