SAS中文论坛

标题: 数据集列转行的问题 [打印本页]

作者: 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




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2