SAS:将字符转换为数字变量 - 逗号作为小数分隔符

时间:2018-01-05 13:24:56

标签: sas formatting type-conversion data-conversion

我正在尝试使用 INPUT 功能,因为它总是被建议,但似乎SAS在正确解释数量方面存在一些问题,例如: 2,30 1,61 0,00 ......我最终错过了价值观。也许这是由逗号为千位分隔符引起的,其中SAS来自;)

data temp;
    old = '1,61';
    new = input(old, 5.2);
run;

为什么上面的结果是新的=

似乎我找到了一些解决办法 - 在调用INPUT函数之前使用 TRANWRD 替换逗号( vide 代码如下),但它是非常丑陋的解决方案,我想必须有一个合适的解决方案。

data temp;
    old = '1,61';
    new = input(tranwrd(old,',','.'), 5.2);
run;

1 个答案:

答案 0 :(得分:5)

示例中new = .的原因是因为SAS无法将逗号识别为小数点分隔符。请参阅日志中的注释。

  

注意:第4行第11行的INPUT函数参数无效。   old = 1,61 new =。 ERROR = 1 N = 1   注意:无法在以下位置执行数学运算。操作的结果已设置为         缺失值。

The documentation包含各种SAS信息的列表。根据文档,您可以使用COMMAX信息。

  

COMMAXw.d - 使用分隔每三位数的句点和用于分隔小数部分的逗号来写入数值。

修改后的代码如下所示:

data temp;
    old = '1,61';
    new = input(old,commax5.);
run;

proc print;

结果输出为:

Obs    old      new

 1     1,61    1.61

如果要将new变量保持为相同的格式,只需将语句format new commax5.;添加到数据步骤即可。

感谢Tom指出SAS使用INPUT()函数中的信息。