从R中特定日期的特定时间转换秒数
Converting seconds from specific time on a specific date in R
如果之前有人问过这个问题,请投反对票并指导我。我一直在查看 SO,但似乎没有人需要非午夜开始时间,即每个人都想知道如何从特定的午夜值转换秒数。
我正在尝试将第二个值转换为数据值。我所拥有的是从 2017-05-21 22:00.
开始的秒数
我尝试使用 as.POSIXct() 函数,但是它似乎只考虑了 Y-m-d,如果我在它后面写 h:m 则忽略它。
例如 file$date = as.POSIXct(file$Time,origin = "2017-05-21 22:00") 给我
Time date
1 0.00 2017-05-22 00:00:00
我发现如果我用
file$Time = file$Time-3600*4
file$date = as.POSIXct(file$Time,origin = "2017-05-22")
出于某种原因给了我正确的输出,这当然是
Time date
1 0.00 2017-05-21 22:00:00
关于如何更优雅地执行此操作有任何想法吗?
此外,如果您知道为什么会给我正确的输出,我会洗耳恭听。
看看lubridate
...
library(lubridate)
ymd_hm("2017-05-21 22:00") + seconds(1.01)
所以在你的情况下它会像
file$date <- ymd_hm("2017-05-21 22:00") + seconds(file$Time)
您可以简单地尝试 as.POSIXct
转换您的开始时间,然后继续增加秒数。如:
as.POSIXct("2017-05-21 22:00:00", format = "%Y-%m-%d %H:%M:%S")
#[1] "2017-05-21 22:00:00 BST"
as.POSIXct("2017-05-21 22:00:00", format = "%Y-%m-%d %H:%M:%S") + 1
#[1] "2017-05-21 22:00:01 BST"
as.POSIXct("2017-05-21 22:00:00", format = "%Y-%m-%d %H:%M:%S") + 100
#[1] "2017-05-21 22:01:40 BST"
as.POSIXct("2017-05-21 22:00:00", format = "%Y-%m-%d %H:%M:%S") + 300
#[1] "2017-05-21 22:05:00 BST
您甚至可以使用 tz
参数指定 time-zone
为:
as.POSIXct("2017-05-21 22:00:00", tz = "UTC", format = "%Y-%m-%d %H:%M:%S")
#[1] "2017-05-21 22:00:00 UTC"
as.POSIXct("2017-05-21 22:00:00", tz = "UTC", format = "%Y-%m-%d %H:%M:%S") + 96
#[1] "2017-05-21 22:01:36 UTC"
如果之前有人问过这个问题,请投反对票并指导我。我一直在查看 SO,但似乎没有人需要非午夜开始时间,即每个人都想知道如何从特定的午夜值转换秒数。
我正在尝试将第二个值转换为数据值。我所拥有的是从 2017-05-21 22:00.
开始的秒数我尝试使用 as.POSIXct() 函数,但是它似乎只考虑了 Y-m-d,如果我在它后面写 h:m 则忽略它。
例如 file$date = as.POSIXct(file$Time,origin = "2017-05-21 22:00") 给我
Time date
1 0.00 2017-05-22 00:00:00
我发现如果我用
file$Time = file$Time-3600*4
file$date = as.POSIXct(file$Time,origin = "2017-05-22")
出于某种原因给了我正确的输出,这当然是
Time date
1 0.00 2017-05-21 22:00:00
关于如何更优雅地执行此操作有任何想法吗?
此外,如果您知道为什么会给我正确的输出,我会洗耳恭听。
看看lubridate
...
library(lubridate)
ymd_hm("2017-05-21 22:00") + seconds(1.01)
所以在你的情况下它会像
file$date <- ymd_hm("2017-05-21 22:00") + seconds(file$Time)
您可以简单地尝试 as.POSIXct
转换您的开始时间,然后继续增加秒数。如:
as.POSIXct("2017-05-21 22:00:00", format = "%Y-%m-%d %H:%M:%S")
#[1] "2017-05-21 22:00:00 BST"
as.POSIXct("2017-05-21 22:00:00", format = "%Y-%m-%d %H:%M:%S") + 1
#[1] "2017-05-21 22:00:01 BST"
as.POSIXct("2017-05-21 22:00:00", format = "%Y-%m-%d %H:%M:%S") + 100
#[1] "2017-05-21 22:01:40 BST"
as.POSIXct("2017-05-21 22:00:00", format = "%Y-%m-%d %H:%M:%S") + 300
#[1] "2017-05-21 22:05:00 BST
您甚至可以使用 tz
参数指定 time-zone
为:
as.POSIXct("2017-05-21 22:00:00", tz = "UTC", format = "%Y-%m-%d %H:%M:%S")
#[1] "2017-05-21 22:00:00 UTC"
as.POSIXct("2017-05-21 22:00:00", tz = "UTC", format = "%Y-%m-%d %H:%M:%S") + 96
#[1] "2017-05-21 22:01:36 UTC"