您好,我正在构建一个数据集,但我要合并的数据具有不同的格式。
从 Excel 工作表中,我将其导入数字 8,而我合并的其他 2 个数据集是字符 20,因此我想将数字 8 更改为字符 20。
如何将变量 acctnum 更改为 char 20? (我也想保留这个名称,因为我假设将创建一个新变量)
data WORK.T82APR;
set WORK.T82APR;
rename F1 = acctnum f2 = tariff;
run;
proc contents data=T82APR;
run;
最佳答案
虽然这个线程已经死了,但我想我应该介入并回答为什么 14 位数字转换变成 E 表示法。
通常,或者更确切地说,除非另有说明,SAS 中的数字格式使用 BEST12 格式。因此,当数值超过 12 个字符(包括任何逗号和句点)时,BEST12 选择 E 表示法作为格式化该值的最佳方式。
在这种情况下,输入函数接收格式化值 put(acctnum, BEST12.)。有两种方法可以解决这个问题。
要么使用
input(put(acctnum, 14.), $20.);
或者,使用格式语句更改变量的格式(直接在数据步骤中或使用类似的 proc 数据集) - 这具有额外的好处,如果您在 SAS 中打开表,您将看到 14 位数字,而不是科学格式化的值。
proc datasets library=work nolist;
modify dsname;
format acctnum 14.;
run;
文森特
关于input - 将数字转换为字符 20,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5992151/