如何在R语言中将PT格式时长数据转换为分钟数值
R语言实现PT格式时长转分钟操作方法
你提供的PTxHyM是标准ISO 8601时长格式,可通过以下两种方案实现转分钟的需求:
方案1:使用lubridate包(推荐,兼容性强)
lubridate是R生态中专门处理时间日期相关操作的常用包,可直接识别该格式:
# 首次使用需先安装包,已安装可跳过此行 install.packages("lubridate") # 加载包 library(lubridate) # 你的输入数据 input_dur <- c("PT8H10M", "PT20M") # 转换为分钟数值 res <- as.duration(input_dur) / dminutes(1) # 查看结果 print(res)
运行后输出结果即为:490 20
方案2:基础R实现(无需安装第三方包)
通过正则匹配提取小时、分钟数值计算:
dur2min <- function(dur_vec) { # 提取小时数,无小时的项默认赋值0 h <- as.integer(sub("^PT(?:(\\d+)H)?.*", "\\1", dur_vec, perl = TRUE)) h[is.na(h)] <- 0 # 提取分钟数 m <- as.integer(sub(".*?(\\d+)M$", "\\1", dur_vec, perl = TRUE)) return(h * 60 + m) } # 测试 input_dur <- c("PT8H10M", "PT20M") res <- dur2min(input_dur) print(res)
两种方案均适配只有小时、只有分钟、同时有小时分钟的PT格式时长转换需求。
内容的提问来源于stack exchange,提问作者ail
相关产品推荐
相关产品推荐

