【问题标题】:Create a series of timestamps along milliseconds in R在 R 中创建一系列以毫秒为单位的时间戳
【发布时间】:2018-08-10 14:27:52
【问题描述】:

我的开始日期为“2017-11-14 10:11:01 CET”,结束日期为“2017-11-15 01:15:59 CET”。我想在这些开始和结束时间戳之间创建每个 500 毫秒的时间戳。例如。我需要一个包含以下输出的数据框

timestamp
2017-11-14 10:11:01.000
2017-11-14 10:11:01.500
2017-11-14 10:11:02.000
2017-11-14 10:11:02.500
.
.
.
2017-11-15 01:15:59.000

不知何故,我设法使用以下代码以毫秒为单位获取开始和结束日期:

start.date <- strptime("2017-11-14 10:11:01 CET", "%Y-%m-%d %H:%M:%OS")
start.date <- format(start.date, "%Y-%m-%d %H:%M:%OS3")
Output: "2017-11-14 10:11:01.000"

同样,我的结束日期为2017-11-15 01:15:59.000。我现在想使用序列函数来创建每个 500 毫秒的时间戳序列。我做了类似的事情

seq.POSIXt(as.POSIXct(start), as.POSIXct(end), units = "milliseconds", by = 500)

但它创建了一系列 20 秒。例如,

"2017-11-14 10:11:01 CET" 
"2017-11-14 10:19:21 CET" 
"2017-11-14 10:27:41 CET"
.
.
.
"2017-11-15 01:11:01 CET"

一旦我能够得到这个系列,我还想把它转换成 UNIX 时间戳。 有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: r timestamp time-series unix-timestamp sequences


    【解决方案1】:

    我不知道这是否是您正在寻找的,但它似乎正在工作

    seq.POSIXt(as.POSIXct(start), as.POSIXct(end), units = "seconds", by = .5)
    

    【讨论】:

    • 它提供了正确的系列,但我无法进一步将它们转换为 UNIX 时间戳。例如。如果我有类似“2017-11-14 11:34:19.5 CET”的内容,那么它的 UNIX 转换轮数为 0.5 秒,并给了我“2017-11-14 11:34:20 CET”。对于 Unix 转换,我使用以下内容: as.numeric (as.POSIXct("2017-11-14 11:34:19.500"), tz = "GMT", origin = "1970-01-01")
    • 我现在只是使用 POSIXct 日期。无论如何谢谢:)
    • seq.POSIXt() 没有名为 units 的参数,因此 units = "seconds" 将被忽略且没有任何意义。
    【解决方案2】:

    当您使用函数 as.integer 时,它会去掉数字的小数部分,在您的情况下是毫秒。

    我建议您使用此解决方法以 UNIX 格式获取所需的数字。 为了获得所需的输出,您可以将函数的输出作为.integer,然后在最后附加您需要的内容。 由于您的 UNIX 时间戳只有最后三位数字等于 000 或 500,您可以尝试:

    k<-as.numeric(seq.POSIXt(as.POSIXct(start.date), as.POSIXct(stop.date), units = "seconds", by = .5))[1:4]
    
    
    k1<-cbind(substr(as.character(k), 1, 10),c("000","500"))
    
    as.numeric(paste0(k1[,1],k1[,2]))
    [1] 1510650661000 1510650661500 1510650662000 1510650662500
    

    请注意,我只对向量的前 4 个元素执行此操作,但逻辑保持不变。

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 1970-01-01
      • 2015-12-24
      • 2023-03-11
      • 1970-01-01
      • 2015-06-17
      • 2011-08-02
      • 1970-01-01
      • 2015-04-29
      相关资源
      最近更新 更多