将数字转换为字符20

问题描述:

嗨我正在构建数据集,但我正在合并的数据格式不同。将数字转换为字符20

从Excel表单我导入其中数字8,另2个数据集即时通讯合并到是字符20,所以想要更改数字8为char 20.

如何更改可变ACCTNUM ,以字符20? (我也想保持这种正如它的名字,因为我相信一个新的变量将被创建)

data WORK.T82APR;  
set WORK.T82APR; 
rename F1 = acctnum f2 = tariff; 
run; 

proc contents data=T82APR; 
run; 

试试这个:

data WORK.T82APR ;  
set WORK.T82APR; 
acctnum = put(F1, $20.); 
rename f2 = tariff; 
run; 

好吧,我没注意你自己的重命名声明,所以我调整了我的答案以反映现在。

+0

对不起,不回答越快,我已经离开。我设法从数字转换为字符,如下所示:data WORK.T82APR;设置WORK.T82APR; acctnum1 =输入(acctnum,$ 20。);关税1 =投入(关税,2美元);降低acctnum关税;重命名acctnum1 = acctnum关税1 =关税;跑;但是,数字的格式不正确,它看起来像这个3.0184403E13,而不是它的意思是14位数字。任何线索? – 2011-05-19 09:16:52

+0

我已经完成了现在。我将xls保存为csv,并将导入的变量标识为char $ 20。为什么我不这样做呢?! – 2011-05-19 10:30:09

+0

很好看,它现在适合你。也许张贴你自己的答案,包括你的工作方式,以供将来参考的人寻找相同的解决方案... – Yoh 2011-05-19 12:01:20

虽然此线程已经死亡,但我想我会介入并回答为什么14位数转换成为E表示法。

通常,或更确切地说,除非另有说明,SAS中的数字格式使用BEST12格式。因此,如果数字值长于12个字符(包括任何逗号和句点),BEST12会选择E表示法作为格式化值的最佳方式。

输入函数在这种情况下会接收格式化的值put(acctnum,BEST12。)。将会有2种方法。

要么使用

input(put(acctnum, 14.), $20.); 

或者更改使用格式语句(直接在数据步或PROC数据集等)变量的格式 - 这具有额外的好处,如果你打开表SAS,你会看到14位数字而不是科学格式的值。

proc datasets library=work nolist; 
    modify dsname; 
     format acctnum 14.; 
run; 

文森特