在变量Time with R中使用毫秒

时间:2017-10-17 19:19:07

标签: r time

我有一个包含格式H:M:S.ms格式的时间的字符变量 要使用此变量,我想将0:31:00.0重新编码为时间变量,但保持毫秒。我试着做以下事情:

BEAdata$Time <- strptime(BEAdata$Time, format='%H:%M:%S.%OS1')

但最终我得到的变量只包含缺失的变量。

有谁知道如何编码这个变量并保持毫秒?

3 个答案:

答案 0 :(得分:0)

%OSn是特定于输出的。来自?strptime

  

R的特定是%OSn 输出表示截断的秒数为   0 <= n <= 6个小数位(如果%OS后面没有数字,则为   使用getOption(“digits.secs”)的设置,或者如果未设置,则n =   0)。此外,对于strptime %OS 输入秒,包括小数   秒。

使用%OS输入毫秒 - 您可以这样做:

(x <- strptime("0:31:00.5", format='%H:%M:%OS'))
# [1] "2017-10-17 00:31:00 CEST"

然后

format(x, '%H:%M:%OS5')
# [1] "00:31:00.50000"

答案 1 :(得分:0)

正如“年月”不是日期(缺少一天),“hour-min-ss.subsec”不是日期时间。

但是如果您愿意/能够预先设置日期,那么不同的日期时间解析器可以帮助您。我最喜欢的是我写的不需要格式的那个。快速演示:

> tstr <- "00:31:00.0"    # added leading zero
> fullstr <- paste("2017-10-17", tstr)
> anytime::anytime(fullstr)
[1] "2017-10-17 00:31:00 CDT"
> 
> tstr <- "00:31:00.012345"    
> fullstr <- paste("2017-10-17", tstr)
> anytime::anytime(fullstr)
[1] "2017-10-17 00:31:00.012345 CDT"
> 

答案 2 :(得分:0)

尝试使用options(digits.secs = n),如strptime的文档所示,这样您最终会

options(digits.secs = 1)

foo <- strptime('0:31:00.0', format='%H:%M:%S.%OS')

foo