SAS中文论坛

标题: 如何用程序改字段类型? [打印本页]

作者: shiyiming    时间: 2008-10-28 11:45
标题: 如何用程序改字段类型?
如题,将字符型改为数字型。
data new;
     set old ;
     income = input(income comma6.2);
run;

这样当然可以,但能否有办法在原来的  data set 上直接改。谢谢。
作者: shiyiming    时间: 2008-10-28 14:33
标题: Re: 如何用程序改字段类型?
楼主,不知道你是否把你的程序运行过,你可以试一下以下程序,然后查看table2的a字段和table3的b字段的属性,其实在程序中用同一个名字进行字符和数字的转换,其属性是不会变的,尽管列的数据会变。
data table1;
    filename datalines;
    input a $;
datalines;
20
30
10
;
run;

data table2;
    set table1;
    a=input(a,comma6.2);
run;
data table3;
    set table1;
    b=input(a,comma6.2);
run;
作者: shiyiming    时间: 2008-10-28 21:28
标题: Re: 如何用程序改字段类型?
也就是说,要改字段属性,字段名也得改。但我用 PROC SQL,居然可以,虽然也提示不对。

data table1;
input a $;
datalines;
20.3
30.2
10
;
run;

Proc SQL;
   create table table1 as                /*这个 Table1 其实是新的 */
   select input(a, comma6.) as a
       from table1;
quit;
作者: shiyiming    时间: 2008-10-29 14:12
标题: Re: 如何用程序改字段类型?
我试过SQL的程序,如果产生新表table2,就不会出现warning,字段a也改了属性,与data步不一样,这应该是由于data和SQL的产生数据集的一原理不同吧。
Proc SQL;
create table table2 as
select input(a, comma6.) as a
from table1;
quit;
作者: shiyiming    时间: 2008-10-29 19:43
标题: Re: 如何用程序改字段类型?
可以将原表的变量重命名成另外一个变量,然后在做转化,是这个意思吗?
data work.a;
set work.a(rename=(a=b));
a= input(b, comma6.2);
drop b;
run;
作者: shiyiming    时间: 2008-10-31 06:33
标题: Re: 如何用程序改字段类型?
Thank you all for your reply.

Select input(a, comma6.) as a.....

The new A should be a different A.
作者: shiyiming    时间: 2008-10-31 11:47
标题: Re: 如何用程序改字段类型?
hello!
did you wake up to the value 10 of variable a in table1 has been changed to 0.1 through by input function?
any improved way to avoid this error?
作者: shiyiming    时间: 2008-11-3 07:31
标题: Re: 如何用程序改字段类型?
data table3;
set table1;
b=input(a, comma10.);
run;

Now b variable is OK.




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