SAS中文论坛

标题: 如何将数据集中的数值型转换为字符型?保留和数值型的位数一样,谢谢! [打印本页]

作者: shiyiming    时间: 2011-10-5 23:49
标题: 如何将数据集中的数值型转换为字符型?保留和数值型的位数一样,谢谢!
data aaa;
input x@@;
cards;
1
10.5
100.55
;
run;

如何将数据集中的数值型转换为字符型?保留和数值型的位数一样,谢谢!
作者: shiyiming    时间: 2011-10-6 13:30
标题: Re: 如何将数据集中的数值型转换为字符型?保留和数值型的位数一样,谢谢!
y=put(x,best.);
作者: shiyiming    时间: 2011-10-6 18:28
标题: Re: 如何将数据集中的数值型转换为字符型?保留和数值型的位数一样,谢谢!
但是y这个变量的长度还是12啊 能否自动变为取值中的最长字符
作者: shiyiming    时间: 2011-10-7 09:12
标题: Re: 如何将数据集中的数值型转换为字符型?保留和数值型的位数一样,谢谢!
两种土办法:
[code:1gjx6w1t]*the one;
data _null_;
   set a;
   varlen=vlength(x);
   call symputx('n',varlen);
   stop;
run;
data b;
set a(rename=(x=_x));
x=put(_x,best&n..);
run;

*the another one;
data _a;set a;varlen=vlength(x);run;
%macro varlen;
        %let id=%sysfunc(open(_a));
        %let nobs=%sysfunc(attrn(&id,nobs));
        %syscall set(id);
        %do i=1 %to &nobs;
                %let rc=%sysfunc(fetchobs(&id,&i));
                                data c(drop=varlen);
                                set _a(rename=(x=_x));
                x=put(_x,best&varlen..);
                                run;
        %end;
        %let id=sysfunc(close(&id));
%mend;
%varlen;
[/code:1gjx6w1t]




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