【问题标题】:Do not how to convert to class "POSIXct"不要如何转换为“POSIXct”类
【发布时间】:2020-08-13 17:49:01
【问题描述】:

我正在尝试将字符串转换为 POSIXct,以便使用 lubridate 将时间舍入到最接近的一刻钟。下面是代码:

x <- c("8:00", "14:47", "21:13", "01:47", "00:19")
x <- paste0(x, ":00")
x <- chron(times. = x)
as.POSIXct(x, "%H:%M:%S")

我得到以下信息

as.POSIXct.default(x, "%H:%M:%S") 中的错误: 不知道如何将“x”转换为“POSIXct”类

【问题讨论】:

  • 没有时间戳的“日期”部分,它们不能是POSIXt。时期。您可以任意分配日期或使用非基础 R 类。
  • 或许as.POSIXct(paste(Sys.Date(), chron::chron(times. = "08:00:00")))

标签: r lubridate posixct


【解决方案1】:

您可以将时间转换为分钟,然后将round 转换为整整十五分钟,然后将数字时间转换为POSIXct。最后strftime 为您提供所需的格式。

x <- c("8:00", "14:47", "21:13", "01:47", "00:19")
tmp <- t(sapply(strsplit(x, ":"), as.numeric))
minutes <- tmp[,2] + tmp[,1]*60
strftime(as.POSIXct((round(minutes/15)*15)/(15*4)*60^2, 
                    origin=Sys.Date(), tz="GMT"), "%H:%M:%S", tz="GMT")
# [1] "08:00:00" "14:45:00" "21:15:00" "01:45:00" "00:15:00"

【讨论】:

    猜你喜欢
    • 2020-10-21
    • 1970-01-01
    • 2017-04-15
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    • 2014-12-04
    • 2019-10-11
    • 2021-10-08
    相关资源
    最近更新 更多