将数字转换为字符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;
好吧,我没注意你自己的重命名声明,所以我调整了我的答案以反映现在。
答
虽然此线程已经死亡,但我想我会介入并回答为什么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;
文森特
对不起,不回答越快,我已经离开。我设法从数字转换为字符,如下所示:data WORK.T82APR;设置WORK.T82APR; acctnum1 =输入(acctnum,$ 20。);关税1 =投入(关税,2美元);降低acctnum关税;重命名acctnum1 = acctnum关税1 =关税;跑;但是,数字的格式不正确,它看起来像这个3.0184403E13,而不是它的意思是14位数字。任何线索? – 2011-05-19 09:16:52
我已经完成了现在。我将xls保存为csv,并将导入的变量标识为char $ 20。为什么我不这样做呢?! – 2011-05-19 10:30:09
很好看,它现在适合你。也许张贴你自己的答案,包括你的工作方式,以供将来参考的人寻找相同的解决方案... – Yoh 2011-05-19 12:01:20