r - 时间戳记R序列毫秒

标签 r

我之前曾问过一个问题(请参阅:Sequence of Timestamps with Milliseconds),但是由于某种原因,当我的时间从00:00:00开始时,我的代码无法正常工作。

我想从一个时间到另一个得到10hz时间的序列。但是这段代码给了我:

1   2018-06-01 00:00:00.000
2   2018-06-01 00:00:00.101
3   2018-06-01 00:00:00.202
4   2018-06-01 00:00:00.303
5   2018-06-01 00:00:00.404

当我需要时:
1   2018-06-01 00:00:00.000
2   2018-06-01 00:00:00.100
3   2018-06-01 00:00:00.200
4   2018-06-01 00:00:00.300
5   2018-06-01 00:00:00.400

代码:
options(digits.secs=3)
Time1 ="2018-06-01 00:00:00"
Time2 ="2018-06-01 00:00:10"
Time1 =as.POSIXct(Time1, format="%Y-%m-%d %H:%M:%OS", tz='UTC')
Time2 =as.POSIXct(Time2, format="%Y-%m-%d %H:%M:%OS", tz='UTC')
library(stringr)
dif_T2_T1 <- difftime(Time1, Time2, units = 'secs')
pattern <- '(\\d)+'
n <- as.numeric(str_extract(dif_T2_T1, pattern = pattern)) * 10
df_blank  <- data.frame(Timestamp = as.character(seq.POSIXt(Time1, Time2, units = 'seconds', length.out = n)))

最佳答案

由于对R中的毫秒数进行了四舍五入(请参见this post),因此需要向向量添加一小部分分数。并且length.out应该是n+1,而不是n

df_blank  <- data.frame(Timestamp = seq.POSIXt(Time1, Time2, length.out=n+1) + 0.0001)
head(df_blank)
#                Timestamp
#1 2018-06-01 00:00:00.000
#2 2018-06-01 00:00:00.100
#3 2018-06-01 00:00:00.200
#4 2018-06-01 00:00:00.300
#5 2018-06-01 00:00:00.400
#6 2018-06-01 00:00:00.500

如果不添加少量,您就可以看到问题所在。
df_blank  <- data.frame(Timestamp = seq.POSIXt(Time1, Time2, length.out=n+1))

head(format(df_blank, "%Y-%m-%d %H:%M:%OS6"))
#                   Timestamp
#1 2018-06-01 00:00:00.000000
#2 2018-06-01 00:00:00.099999
#3 2018-06-01 00:00:00.200000
#4 2018-06-01 00:00:00.299999
#5 2018-06-01 00:00:00.400000
#6 2018-06-01 00:00:00.500000

如果不进行格式化,您会看到一个非常奇怪的序列。
head(df_blank)
#              Timestamp
#1 2018-06-01 00:00:00.0
#2 2018-06-01 00:00:00.0
#3 2018-06-01 00:00:00.2
#4 2018-06-01 00:00:00.2
#5 2018-06-01 00:00:00.4
#6 2018-06-01 00:00:00.5

关于r - 时间戳记R序列毫秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62366490/

相关文章:

r - R中的日期时间转换

将 DateVector 元素与 Date 进行比较时发生 Rcpp 错误

r - 在每个章节标题上方添加一个 HTML block

r - ggplot2 和 GLM : plot a predicted probability

r - 为什么 as.numeric(1) == (3 | 4) 评估为 TRUE?

r - 使用 dplyr 进行多级排序

r - ggmap - 将两个卫星 ggmap 合并为 1 个 ggmap

r - R 中的循环 - 回归

r - 在函数内的lm()中调用权重无法正确评估

r - 根据最后 n 个字符提取值