营业时间:分钟:秒到秒

时间:2017-09-07 19:23:14

标签: r datetime-conversion

我正在尝试将列中的一长串值转换为小时:分钟:秒到秒。只要值为H:M:S格式,我下面的代码就可以正常工作,但我的随机行中的值只是M:S格式(所以没有小时)。当我尝试在它们上面执行以下代码时,我显然会为每个值获得NA。有没有办法只能搜索M:S格式的值,只能搜索H:M:S格式,并单独转换它们?我是否需要在每个M:S值中添加小时值,以便我可以一次转换所有值?我的代码如下:

as.numeric(strptime(df$x, format="%H:%M:%S") - as.POSIXct(format(Sys.Date())), units="secs")

Example of data:
    Time
    12:22:05
    42:44

Example of data after running above:
    Time
    44525
    NA

2 个答案:

答案 0 :(得分:3)

使用parse_date_time包时尝试lubridate

df$time <- parse_date_time(x = df$time, c("HMS","MS"))

答案 1 :(得分:1)

您建议将小时数值添加到M:S格式似乎也很容易实现:

x = c("12:22:05", "42:44")
x[nchar(x)<8] <- paste0("00:", x[nchar(x)<8])
as.numeric(strptime(x, format="%H:%M:%S") - as.POSIXct(format(Sys.Date())), units="secs")
## 44525  2564