问题描述
我有一些不同持续时间格式的字符串。它们中的大多数采用 %H:%M:%s 格式,但其中一些采用 %D.%H:%M:%s 格式。我想将后者转换为前者的格式。最有效的方法是什么?
示例字符串
[1] "10.10:58:28" "06:17:07" "02:34:39" "01:10:50" "01:06:18" "1.00:02:47" "3.05:40:06" "05:06:23" "05:35:46" "01:47:16"
[11] "1.03:24:46" "03:23:07" "03:37:23" "03:01:22" "03:38:06" "02:31:42" "04:33:04" "04:11:34" "02:43:00" "07:03:16"
[21] "01:18:15" "00:00:17" "02:22:54" "05:24:20" "05:25:14" "05:42:25" "04:36:01" "05:04:59" "02:03:39" "59.03:03:19"
[31] "01:28:53" "59.03:03:19" "01:28:53" "23:24:56" "00:54:02" "00:03:49" "00:20:14" "02:02:00" "02:06:06" "03:06:30"
[41] "01:06:56" "03:08:14" "07:10:03" "02:25:38" "19:20:48" "04:19:55" "1.20:43:46" "01:17:52" "05:46:05" "00:18:02"
[51] "2.03:27:50" "00:00:32" "04:20:49" "04:37:09" "05:30:47" "01:34:04" "02:19:55" "05:12:19" "03:32:31" "00:22:42"
[61] "06:07:06" "04:29:06" "05:23:51" "01:44:53" "07:14:42" "06:14:20" "02:57:08" "05:25:58" "3.22:46:41" "02:40:29"
[71] "03:18:57" "03:08:42" "03:25:22" "03:51:23" "03:24:57" "00:04:07" "03:09:47" "04:41:39" "05:37:18" "05:46:58"
[81] "00:19:32" "05:39:10" "04:08:27" "02:12:08" "07:49:42" "01:31:45" "00:00:00" "00:00:00" "00:00:00" "00:00:00"
[91] "02:59:25" "03:34:31" "02:53:47" "02:51:24" "03:18:26" "03:21:12" "02:45:38" "01:30:21" "02:19:22" "2.22:00:08"
[101] "01:50:34" "04:20:33" "02:05:52" "06:07:08" "01:48:33" "00:01:43" "04:45:54" "04:48:57" "02:04:25" "01:51:30"
[111] "04:12:43" "02:19:47" "05:06:01" "00:00:00" "05:07:20" "04:24:59" "04:27:39" "22:35:31" "00:00:00" "06:20:22"
[121] "06:46:37" "06:04:58" "04:33:05" "03:39:32" "05:38:28" "04:51:55"
编辑: 输入 - 输出示例
"10.10:58:28" 应转换为 "250:58:28"(10. 等于 10 天等于 240 小时) 尽管 “06:04:58”保持“06:04:58”不变。
解决方法
最后答案很简单:编写自己的函数。
这个函数应该做我要求的:
dhms_to_hms <- function(x){
if(str_length(x)>8){
val_num <- x %>%
str_replace('\\.',':') %>%
str_extract_all('(\\d){1,}') %>%
flatten %>%
as.numeric
hms <- str_c(val_num[1]*24+val_num[2],val_num[3],val_num[4],sep = ':')
}else hms <- x
return(hms)
}