2

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

从 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;
4

2 回答 2

3

虽然这个线程已经死了,但我想我会进入并回答为什么 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;

文森特

于 2013-07-03T15:51:05.500 回答
2

尝试这个:

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

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

于 2011-05-13T13:05:01.217 回答