我正在尝试使用 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;
答案 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()
函数中的信息。