【问题标题】:SAS: Substring TIme in SAS after 10 lengthSAS:10长度后SAS中的子字符串时间
【发布时间】:2016-11-17 13:07:29
【问题描述】:

我尝试通过以下方式对时间进行子串化:

HH = substrn(Time,1,2); MM = substrn(Time,4,2); SS = substrn(Time,7,2); MSS = substrn(Time,10,3);

但是,SAS 看不到最后一部分 (MSS),它应该是最后 3 位数字,即毫秒。时间变量的格式为 time20.3。并显示长度为 8。 我相信这是长度的错,但我如何将它增加到 10?我只知道它对非数字变量是如何工作的。

最好的,M

【问题讨论】:

    标签: sas format string-length


    【解决方案1】:

    如果 TIME 的格式为 TIME20.3,那么它是一个数值变量。数字变量不可能存储长度为 10,因为 SAS 将所有数字存储为 64 位浮点数。

    只需使用函数来获取零件。

     hour = hour(time);
     minute = minute(time);
     second = second(time);
     milliseconds = 1000*(time - int(time) );
    

    如果您不自己将其转换为字符,那么 SAS 将使用 BEST12 自动将其转换。改为格式。因此,您将看到像 '34007.542699' 这样的值,而不是像 '09:26:47.543' 这样的值。

    您可以使用VVALUE() 函数查看格式化值或PUT() 函数。

    【讨论】:

      猜你喜欢
      • 2017-09-15
      • 2016-05-09
      • 1970-01-01
      • 2019-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多