首页 > 解决方案 > as.POSIXct.numeric(time1, tz = tz) 中的错误:必须提供“原点”

问题描述

我将每日小时/分钟(1:00,2:00,..., 13:30,..., 22:30, 24:10)作为初始和最后一小时的时间表 df 字符串列,之后我想计算它们之间的小时差。

这是我的尝试:

# intial string example #

df[1, "schedule"] 

 // console output//
"14:00H ÀS 22:18H - 1H DE DESCANSO"

## setting hour and minutes format ##
initial_hour <- hm(
                    as.character(
                    factor(
                    substr(
                    df$schedule, 
                    start = 1,
                    stop  = 5)
                    )))

final_hour <-   hm(
                    as.character(
                    factor(
                    substr(
                    df$schedule,
                     start = 11,
                     stop =  15))))

# hour difference ##
difftime(final_hour, initial_hour, tz = Sys.timezone(location = TRUE) , units = "hours")

// console output //

Error in as.POSIXct.numeric(time1, tz = tz) : 'origin' must be supplied

是否可以在参数函数中设置“原点”?

标签: rstringtimedifflubridate

解决方案


正如您似乎正在使用的那样lubridate,您可以只减去没有的句点difftime

h1 <- lubridate::hm('24:10')
h2 <- lubridate::hm('23:05')

h1-h2

#> [1] "1H 5M 0S"

reprex 包(v0.3.0)于 2020 年 9 月 25 日创建


推荐阅读