标题: 数据集列转行的问题 [打印本页] 作者: shiyiming 时间: 2009-11-17 13:15 标题: 数据集列转行的问题 数据集中有 a b c d e f g h 这几个变量,c与f、d与g、e与h一一相对应(比如一个是数据一个是单位)现在希望可以把c d e 这几个变量放到一列中,也就是放在一个变量下,原先的变量名为一列,数据为一列。把 f g h这几个变量放到一列下。a b变量不变,但数据要对应上新的变量,形成新的数据集 。请问应该如何编程?
例如
a b c d e f g h
1 2 4 6 4 3 4 6
4 4 4 6 7 8 9 8
变为
a b m n x y
1 2 c 4 f 3
1 2 d 6 g 4
1 2 e 4 h 6
4 4 c 4 f 8
........作者: shiyiming 时间: 2009-11-17 13:48 标题: Re: 数据集列转行的问题 [code:17ykp9oe]data aaa;
input a b c d e f g h;
m ='c'; n =c; x ='f'; y =f; output;
m ='d'; n =d; x ='g'; y =g; output;
m ='e'; n =e; x ='h'; y =h; output;
cards;
1 2 4 6 4 3 4 6
4 4 4 6 7 8 9 8
;
run;[/code:17ykp9oe]
看,问题解决了。请不要说如果有成千上万的变量如何如何。因为我知道你没有。作者: shiyiming 时间: 2009-11-17 14:02 标题: Re: 数据集列转行的问题 如果是数据集已经存在了,并不需要输入变量呢?本人刚开始用SAS,还在上手阶段,谢谢!作者: shiyiming 时间: 2009-11-17 14:39 标题: Re: 数据集列转行的问题 [code:1bdu9e0q]data raw;
input a b c d e f g h;
datalines;
1 2 4 6 4 3 4 6
4 4 4 6 7 8 9 8
;
run;
data tmp(keep=a b m n x y);
set raw;
array ary1(*) c d e;
array ary2(*) f g h;
do i=1 to dim(ary1);
m=vname(ary1(i));
n=ary1(i);
x=vname(ary2(i));
y=ary2(i);
output;
end;
run;[/code:1bdu9e0q]作者: shiyiming 时间: 2009-11-17 15:08 标题: Re: 数据集列转行的问题 transpose