【问题标题】:Converting seconds from specific time on a specific date in R在R中的特定日期从特定时间转换秒数
【发布时间】:2018-02-21 07:39:39
【问题描述】:

如果以前有人问过这个问题,请投反对票并指导我。我一直在研究 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

知道如何更优雅地做到这一点吗?

另外,如果你知道为什么这会给我正确的输出,我会全神贯注。

【问题讨论】:

  • 您可以创建原始日期/时间的日期/时间,然后添加秒偏移量以创建新的日期/时间。
  • @MKR 你会怎么做?
  • 您可以尝试以as.POSIXct("2017-05-21 22:00:00", format = "%Y-%m-%d %H:%M:%S") + 1 添加1 秒。和as.POSIXct("2017-05-21 22:00:00", format = "%Y-%m-%d %H:%M:%S") + 100 添加100 秒。你不需要任何这样的包。

标签: r date formatting date-format


【解决方案1】:

您可以简单地尝试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"

【讨论】:

    【解决方案2】:

    看看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) 
    

    【讨论】:

    • 由于某种原因 install.packages("lubridate", dependencies = TRUE) 没问题,但是 library(lubridate) 给了我一个错误,说“库中的错误(lubridate): 没有调用包'润滑'"。
    • 您是否重新启动了 r 会话?在我的情况下,版本 1.7.2 就像一个魅力
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-16
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多