我正在尝试将列中的一长串值转换为小时:分钟:秒到秒。只要值为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
答案 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