1

我正在尝试将一些文本数据转换为时间。我知道转换2019-09-24 00:00:03为时间格式的方法,但我想将更高频率的数据转换为时间。

一些观察结果如下所示:

 [1] "2019-09-24D00:00:03.384309000" "2019-09-24D00:00:03.404018000"
 [3] "2019-09-24D00:00:03.408065000" "2019-09-24D00:00:03.552361000"
 [5] "2019-09-24D00:00:03.572690000" "2019-09-24D00:00:03.572690000"
 [7] "2019-09-24D00:00:03.572690000" "2019-09-24D00:00:03.572690000"

我找到了一些可以转换此数据的 Python 代码:

data[‘timestamp’] = data.timestamp.map(lambda t: datetime.strptime(t[:-3], “%Y-%m-%dD%H:%M:%S.%f”))

数据:

data <- c("2019-09-24D00:00:03.384309000", "2019-09-24D00:00:03.404018000", 
"2019-09-24D00:00:03.408065000", "2019-09-24D00:00:03.552361000", 
"2019-09-24D00:00:03.572690000", "2019-09-24D00:00:03.572690000", 
"2019-09-24D00:00:03.572690000", "2019-09-24D00:00:03.572690000", 
"2019-09-24D00:00:03.572690000", "2019-09-24D00:00:03.572690000", 
"2019-09-24D00:00:03.572690000", "2019-09-24D00:00:03.572690000", 
"2019-09-24D00:00:03.572690000", "2019-09-24D00:00:03.572690000", 
"2019-09-24D00:00:03.614967000", "2019-09-24D00:00:03.656928000", 
"2019-09-24D00:00:03.711825000", "2019-09-24D00:00:03.711825000", 
"2019-09-24D00:00:03.711825000", "2019-09-24D00:00:03.711825000"
)
4

2 回答 2

1

我们可以用来lubridate正确解析它

library(lubridate)
out <- ymd_hms(data)
format(head(out), '%OS6')
#[1] "03.384309" "03.404017" "03.408064" "03.552361" "03.572690" "03.572690"

它解析毫秒,但输出在屏幕上很好地打印的print方法。formats如果我们想查看毫秒是否已经存在,


或与anytime

library(anytime)
anytime(data)
于 2019-09-25T18:59:45.713 回答
0

退房asPOSIXct()。要找出正确的format参数,请查看?strptime.

res <- as.POSIXct(data, format="%FD%R:%OS")
head(res, 3)
# [1] "2019-09-24 00:00:03.384309 CEST" "2019-09-24 00:00:03.404017 CEST"
# [3] "2019-09-24 00:00:03.408065 CEST"
class(res)
# [1] "POSIXct" "POSIXt" 
于 2019-09-25T20:36:49.667 回答