我正在清理数据框并尝试使用lubridate将列转换为小时:分钟:秒。该列的格式只有分钟和秒(例如“36:10”),有些值有小时,分钟和秒(例如“1:06:32”)。我无法在lubridate中找到命令没有将这两个案例中的一个变成NA。
下面的例子(我添加了一个带有NA值的行,因为我的数据帧有几个这样的)
library(lubridate)
a <- c("36:10", "1:06:32", NA)
b <- hms(a)
b
[1] NA "1H 6M 32S" NA
任何帮助赞赏。
或者只用基数R缩短:
a <- c("36:10", "1:06:32", NA)
a2 <- ifelse(nchar(a) < 6, paste0("00:", a), a)
hms(a2)
> hms(a2)
[1] "36M 10S" "1H 6M 32S" NA
如果只有一个冒号,为什么不粘贴“0:”
hms(purrr::map2_chr(a, stringr::str_count(a, ":"),
~dplyr::if_else(.y==1, paste0("0:", .x), .x)))