You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中将MM:SS格式字符串转为时间类型并做加减运算

错误原因

你原有代码执行失败的核心原因是:tm列是MM:SS格式的字符串,直接调用as.numeric()无法完成有效转换,会直接返回NA,后续运算自然全部得到NA结果。

实现方法1:使用lubridate包处理(更直观)

lubridate包的ms()函数可以直接识别MM:SS格式的时间字符串,转换为周期类型后直接做时间运算即可:

library(tidyverse)
library(lubridate)

dat %>%
  # 先把tm转成分钟-秒周期,加5分钟,再格式化回MM:SS字符串
  mutate(nt = format(ms(tm) + minutes(5), "%M:%S"))

运行结果:

# A tibble: 3 × 3
  title   tm    nt   
  <chr>   <chr> <chr>
1 Title A 31:17 36:17
2 Title B 30:28 35:28
3 Title C 32:06 37:06

实现方法2:使用hms包处理

如果要使用hms包,需要先把MM:SS格式补成HH:MM:SS格式再转换,5分钟换算成300秒做加法:

library(tidyverse)
library(hms)

dat %>%
  mutate(nt = hms::as_hms(paste0("00:", tm)) + 5*60,
         # 如果需要输出MM:SS格式字符串,再加一步格式化
         nt = format(nt, "%M:%S"))

运行结果和方法1完全一致。

内容的提问来源于stack exchange,提问作者littleworth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 22:06:02