sas - 将 CHAR 转换为具有不同小数位的 NUM

标签 sas

我正在尝试将存储的列从字符转换为数字。问题是此列的小数位数不同。

例如,

 Data
 1052969525
 392282764.234
 221018301.2
 130010764.7894
 82340150
 183779233.4

我已经确定小数位数的最大值可能是 4,所需的宽度大约是 15。所以我尝试了以下操作:

 datanum = input(data, 15.4);

但这似乎将小数点放在了错误的位置,特别是对于那些没有小数点的。将此列从 char 转换为 numeric 的最合理方法是什么?此列是其他人上传的数据库表的一部分,因此没有太多选项可以更改它。谢谢。

最佳答案

您通常不会在信息格式中提供小数位宽度。对于普通数字,您只需提供宽度,SAS 会为您计算出小数点(基于小数点的位置)。

datanum = input(data,15.);

信息格式的 .d 部分是为了与(大多数)数据中没有小数的旧系统兼容,以节省空间。例如,如果我正在读取金额,而我只有 6 个空格:

123456
882348
100000
123400

我可以将其读作整数美分 - 或者我可以这样做:

input cost 6.2;

这将告诉 SAS 将小数点放在最后 2 个字符之前。

关于sas - 将 CHAR 转换为具有不同小数位的 NUM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32506826/

相关文章:

sql - 是否可以循环遍历整个流程 n 次?

sas - SAS:ODS EXCEL(如何命名不同的工作表)

sas - 添加新的 SAS 变量,同时保留完整性约束

可变长度的SAS infile杂乱格式

sas - SAS中多列的累积总和

python - 在 .sas7bdat 中编码

sas - SAS 中的 last.group 语句

sas - 在 SAS 中的宏变量中替换文本

regex - 使用 PRXNEXT 捕获关键字的所有实例

character-encoding - 如何以编程方式获取 SAS 编码选项?