SAS中文论坛

标题: 求教sas程序转换编码 [打印本页]

作者: shiyiming    时间: 2011-5-25 02:21
标题: 求教sas程序转换编码
Excel文件中有上万列,每一列是A、T、C、G 4个字母中两个的组合。
如何用SAS编码实现自动转换?

现在想将AA转换成1,AG转换成2,GG转换成3


在Excel 中使用"搜索替换"功能会遭遇以下问题:譬如第一列中有AA,AG,GG三种组合,可将AA转换成1,AG 2, GG 3,第二列中有GG,GC,CC,将GG转换成3,GC2,CC 1, 但第三列有AA,AC,CC, 那么AA或者CC就必须有一个为3.所以,只能一列列转,不能一次性全转。但数据有上万列~~~~~求教SAS高手指点!!
作者: shiyiming    时间: 2011-5-25 18:12
标题: Re: 求教sas程序转换编码
[code:mx3gx8ov]data ahuige(drop=i);
    format var1-var3 $2.;
    input var1-var3;
    array allvar(1:3) var1-var3;
    array alltemp(1:3)   $20.  _temporary_ ;
    do i=1 to 3;
        if not index(alltemp(i),allvar(i)) then alltemp(i)=left(trim(alltemp(i))||' '||allvar(i));
        allvar(i)=2+sign(index(alltemp(i),allvar(i))-4);
    end;
    cards;
AA CG AC
AG CC AA
GG GG CC
AA  CC CC
GG CG AA
;
RUN;

proc print;run;[/code:mx3gx8ov]
作者: shiyiming    时间: 2011-5-26 00:02
标题: Re: 求教sas程序转换编码
感谢牛人赐教!为您祈祷人品爆发!

等小弟研究一下~~~~~~
作者: shiyiming    时间: 2011-5-26 02:04
标题: Re: 求教sas程序转换编码
求教:能否在survival model下实现循环语句

现在用lifetest 做survival model,
proc lifetest data=yy;
time age*status(0);
strata mi;
run;

现在mi有500个,m1至m500, 能否写个程序把m1-m500分别代入mi。
在这里面好像用不了do语句~~
作者: shiyiming    时间: 2011-5-26 09:35
标题: Re: 求教sas程序转换编码
since the proc wont accept multiple strata, you have to run the proc over again. An example as following

Jingju

[code:1i1zz7r0]data yy;
        set sashelp.class;
        status =(ranuni(1)>0.35);
        array m(10); do i =1 to dim(m);        m[i] =(rannor(1) >0); end;
run;
%macro procM(mi=);
        proc lifetest data=yy; time age*status(0); strata &mi; run;
%mend procM;
data _null_;
        do i =1 to 10;
                call execute('%procM(mi='||cats('m', i)||')');
        end;
run;[/code:1i1zz7r0]
作者: shiyiming    时间: 2011-5-28 22:28
标题: Re: 求教sas程序转换编码
sounds great! man~~ thank you so much, I am gonna to try it and see how it works.
作者: shiyiming    时间: 2012-7-21 21:10
标题: Re: 求教sas程序转换编码
Mark




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