我的开始日期是"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
。现在我想使用sequence函数来创建每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时间戳。有人能帮我解决这个问题吗?
发布于 2018-08-10 22:40:08
我不知道这是否是你要找的东西,但它似乎起作用了
seq.POSIXt(as.POSIXct(start), as.POSIXct(end), units = "seconds", by = .5)
发布于 2018-08-10 23:39:39
当你使用函数as.integer时,它将去掉数字的小数部分,在你的例子中是毫秒。
我建议您使用此解决方法以UNIX格式获取所需的数字。为了获得所需的输出,您可以获取函数as.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个元素执行了此操作,但逻辑保持不变。
https://stackoverflow.com/questions/51788662
复制相似问题