将数字时间格式转换为 POSIXlt

Convert numeric time format to POSIXlt

我有时间从文件中导入。该列被视为数字,如下所示:

head(RawData$TimeStart, 10) [1] 0.00 0.00 0.00 30.19 0.00 25.00 0.00 9.20 0.00 0.00

例如,此数据表示在 0.0 分钟和 30 分钟 19 秒 (30.19) 处采集的样本。

我希望现在将此列转换为以下格式:

> head(RawData$Converted, 10)
 [1] "2017-07-05 00:00:00 AEST" "2017-07-05 00:00:00 AEST" "2017-07-05 00:00:00 AEST" "2017-07-05 00:30:19 AEST"
 [5] "2017-07-05 00:00:00 AEST" "2017-07-05 00:25:00 AEST" "2017-07-05 00:00:00 AEST" "2017-07-05 00:09:20 AEST"
 [9] "2017-07-05 00:00:00 AEST" "2017-07-05 00:00:00 AEST"

我试过以下方法: RawData$Converted <- as.POSIXct(RawData$TimeStart, origin='1970-01-01', tz='Australia/Darwin')

但这并没有给出今天的日期/时间。我很困惑,所以任何帮助将不胜感激。

分解您的数值以将它们全部转换为秒,并将其添加到今天的日期时间:

x <- c(0.00,0.00,0.00,30.19,0.00,25.00,0.00,9.20,0.00,0.00)
as.POSIXct(format(Sys.Date()), tz="Australia/Darwin") + (floor(x)*60) + ((x-floor(x))*100)
# [1] "2017-07-05 00:00:00 ACST" "2017-07-05 00:00:00 ACST" "2017-07-05 00:00:00 ACST" "2017-07-05 00:30:19 ACST"
# [5] "2017-07-05 00:00:00 ACST" "2017-07-05 00:25:00 ACST" "2017-07-05 00:00:00 ACST" "2017-07-05 00:09:20 ACST"
# [9] "2017-07-05 00:00:00 ACST" "2017-07-05 00:00:00 ACST"

这是达尔文时间,ACST 而不是 AEST,但我想这就是你想要的。