我有一个包含格式H:M:S.ms
格式的时间的字符变量
要使用此变量,我想将0:31:00.0重新编码为时间变量,但保持毫秒。我试着做以下事情:
BEAdata$Time <- strptime(BEAdata$Time, format='%H:%M:%S.%OS1')
但最终我得到的变量只包含缺失的变量。
有谁知道如何编码这个变量并保持毫秒?
答案 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