Input 将数字转换为字符20

Input 将数字转换为字符20,input,sas,put,Input,Sas,Put,嗨,我正在构建一个数据集,但是我正在合并的数据是不同格式的 从Excel工作表中,我导入了数字8,我合并到的其他两个数据集是字符20,所以我想将数字8改为字符20 如何将变量acctnum更改为char 20?(我还想保留这个名称,因为我假定将创建一个新变量) 试试这个: data WORK.T82APR ; set WORK.T82APR; acctnum = put(F1, $20.); rename f2 = tariff; run; 好的,我没有注意你自己的重命名语句,所

嗨,我正在构建一个数据集,但是我正在合并的数据是不同格式的

从Excel工作表中,我导入了数字8,我合并到的其他两个数据集是字符20,所以我想将数字8改为字符20

如何将变量acctnum更改为char 20?(我还想保留这个名称,因为我假定将创建一个新变量)

试试这个:

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

好的,我没有注意你自己的重命名语句,所以我现在调整了我的答案以反映这一点。

虽然这个线程已经死了,但我想我应该介入并回答为什么14位数的转换变成了E表示法

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

在这种情况下,输入函数接收格式化的值put(acctnum,BEST12.)。有两种方法可以解决这个问题

任用

input(put(acctnum, 14.), $20.);
或者,使用format语句(直接在数据步骤中或使用proc数据集,如)更改变量的格式-这还有一个额外的好处,即如果在SAS中打开表格,您将看到14位数字,而不是科学格式的值

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

文森特

很抱歉没有早点回复,我已经走了。我成功地将数字转换为字符,如下所示:data WORK.T82APR;设置WORK.T82APR;acctnum1=输入(acctnum,$20.);tariff1=投入(关税,2美元);降低关税;重命名acctnum1=acctnum tariff1=关税;跑但是,数字的格式不正确,看起来像是3.0184403E13,而不是14位数字。有什么线索吗?我已经弄明白了。我将xls保存为csv,并将变量识别为char$20导入。为什么我一开始不这么做!?很高兴读到它现在对你有用。也许发布你自己的答案,包括你的解决方法,供将来寻找相同解决方案的人参考。。。
proc datasets library=work nolist;
    modify dsname;
        format acctnum 14.;
run;