【问题标题】:SAS converting text to numeric F12.2 format errorSAS 将文本转换为数字 F12.2 格式错误
【发布时间】:2018-10-17 13:53:43
【问题描述】:

我正在尝试将文本变量转换为数字,然后返回文本以对其进行舍入并保留尾随和前导零,因此如果我的数字为 0.501,我想在 SAS 中显示 0.50。

我想出了这段代码,当文本字符串长于 3 位 + 时有效,但只有 1 位时无效

test = strip(put(round(input('5',f12.2),0.01),f12.2));
test_2 = input('5',f12.2)

有人能解释一下为什么我在上面的例子中得到的是 0.05 而不是 5.00 吗?

【问题讨论】:

    标签: string sas numbers format


    【解决方案1】:

    您的主要问题是使用 F12.2 作为 INFORMAT。如果该值没有明确的小数,则 2 表示该值除以 1E2。

    42   data _null_;
    43      length have $12;
    44      do have = '5','5.001','500.01';
    45         new  = put(round(input(have,f12.),.01),F12.2-l);
    46         put '*' new $12. '*' +3 have=;
    47         end;
    48      run;
    
    *5.00        *   have=5
    *5.00        *   have=5.001
    *500.01      *   have=500.01
    

    【讨论】:

    • 非常有见地
    • 非常感谢!F12.2-l 是什么意思?
    • -L 是左对齐格式化值的修饰符。数字变量的默认值是正确的,因为您使用了 STRIP,所以我不感谢您想要这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    相关资源
    最近更新 更多