如何在SAS中将文本转换为数字格式

时间:2014-08-05 12:38:37

标签: text sas numeric

我有一个来自数据仓库的大数据集,其中一个变量已作为字符串读入。该变量只包含数字,而且我没有得到原始数据,所以我自己无法读取数据。

示例:

Variabel
4659721685425645
1234564578978896
7894567894567894

格式为20美元。信息是19美元。

我想将其转换为数字,因此我可以将数据集与另一个数据集连接在同一个变量上,但此变量是数字。

我已经尝试过了:

 data x_numeric;
        set x;
        format variable 20.;
 run;

感谢帮助!

1 个答案:

答案 0 :(得分:2)

一个20位数字不能以完全精确的数字方式存储在SAS中。 SAS使用双精度浮点数,这意味着它们以8个字节存储数字。 52位用于尾数(精度),11用于指数,1用于符号。 2^53是可以精确存储在SAS中的最大数字,或大约9x10 ^ 15(任意数量的15位数,以及大多数16位数)。这在IEEE兼容系统(基于Intel,Unix,Windows等)上都是如此。 IBM大型机使用56位作为尾数,因此可以精确存储最多2 ^ 57个。

有关详细信息,请参阅SAS article on numeric precision

如果您的号码可以用数字安全地表示(即小于9E16),那么您可以使用input转换它。

var_n = input(var_c, 20.);

其中20.是要读取它的信息(应该与字符变量的format宽度相同,而不是其信息)。您不必永久地在数据集中执行此操作;如果您使用的是sql join,则可以使用on tbl1.var = input(tbl2.var,20.)或类似内容进行加入(尽管在数据步骤合并中您不能这样做)。