gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 23:33:01 27 4
gpt4 key购买 nike

我正在尝试使用 输入 函数,因为它总是被建议,但似乎 SAS 在正确解释数量方面存在一些问题,例如:
2,30
1,61
0,00
...我最终得到了缺失值。也许这是由于逗号是 SAS 来自的千位分隔符引起的;)

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

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

似乎我找到了一些解决方法 - 通过使用 用句点替换逗号创汇在调用 INPUT 函数之前(请参阅下面的代码),但这是一个非常丑陋的解决方案,我想必须有一个合适的解决方案。
data temp;
old = '1,61';
new = input(tranwrd(old,',','.'), 5.2);
run;

最佳答案

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

NOTE: Invalid argument to function INPUT at line 4 column 11. old=1,61 new=. ERROR=1 N=1 NOTE: Mathematical operations could not be performed at the following places. The results of the operations have been set to missing values.



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

COMMAXw.d - Writes numeric values with a period that separates every three digits and a comma that separates the decimal fraction.



修改后的代码如下所示:
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() 中使用信息。功能。

关于SAS:将字符转换为数字变量 - 逗号作为小数点分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48114558/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com