SAS:10 长度后 SAS 中的子字符串 TIme
SAS: Substring TIme in SAS after 10 length
我尝试按以下方式对时间进行子字符串处理:
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
如果 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()
函数。
我尝试按以下方式对时间进行子字符串处理:
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
如果 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()
函数。