SAS中文论坛
标题:
数据集结转处理
[打印本页]
作者:
shiyiming
时间:
2010-10-15 13:26
标题:
数据集结转处理
现有数据集X,形式如下
a1 b1 c1 d1 a2 b2 c2 d2 a3 b3 c3 d3
1 2 3 1 2 2 3 4 2 6 5 8
现在要把数据集x变成如下的样子
a b c d
1 2 3 1
2 2 3 4
2 6 5 8
请问各位大侠应该如何编程?
作者:
shiyiming
时间:
2010-10-15 13:39
标题:
Re: 数据集结转处理
data have;
input a1 b1 c1 d1 a2 b2 c2 d2 a3 b3 c3 d3;
cards;
1 2 3 1 2 2 3 4 2 6 5 8
;
data wanted(keep= a b c d);
set have ;
array aa (3) a1-a3;
array bb (3) b1-b3;
array cc (3) c1-c3;
array dd (3) d1-d3;
do i=1 to 3;
a=aa(i); b=bb(i); c=cc(i); d=dd(i);
output;
end;
run;
作者:
shiyiming
时间:
2010-10-15 13:44
标题:
Re: 数据集结转处理
[code:3sx6b3w7]data raw;
input a1 b1 c1 d1 a2 b2 c2 d2 a3 b3 c3 d3;
datalines;
1 2 3 1 2 2 3 4 2 6 5 8
11 12 13 11 12 12 13 14 12 16 15 18
;
data out;
set raw;
array temp(3,4) _numeric_;
array out(4) a b c d;
do i=1 to dim1(temp);
do j=1 to dim2(temp);
out(j)=temp(i,j);
end;
output;
end;
keep a b c d;
run;[/code:3sx6b3w7]
作者:
shiyiming
时间:
2010-10-15 13:44
标题:
Re: 数据集结转处理
data have;
input a1 b1 c1 d1 a2 b2 c2 d2 a3 b3 c3 d3;
cards;
1 2 3 1 2 2 3 4 2 6 5 8
;
proc transpose data=have out=aaa;
run;
data aaa;
set aaa;
group=substr(_name_,2);
name=substr(_name_,1,1);
run;
proc transpose data=aaa out=wanted(drop=group _name_);
by group;
id name;
run;
作者:
shiyiming
时间:
2010-10-15 21:49
标题:
Re: 数据集结转处理
[code:1e8jkwam]
data a;
input a1 b1 c1 d1 a2 b2 c2 d2 a3 b3 c3 d3;
cards;
1 2 3 1 2 2 3 4 2 6 5 8
;
run;
proc iml;
use a;
read all var _num_ into A;
close a;
B=shape(A,3,4);
create result from B[colname={'a' 'b' 'c' 'd'}];
append from B;
quit;
[/code:1e8jkwam]
作者:
shiyiming
时间:
2010-10-21 20:40
标题:
Re: 数据集结转处理
[color=#4000FF:3ibqnam5]留个记号,说不定哪天能用得到[/color:3ibqnam5]
欢迎光临 SAS中文论坛 (https://mysas.net/forum/)
Powered by Discuz! X3.2