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

将Dataframe中HH:MM:SS格式列转换为分钟列(R语言)

将HH:MM:SS格式时间转为分钟数(R语言)

问题场景

处理dataframe时,需将ride_length列(HH:MM:SS格式)转换为对应的分钟数,新增列存储结果。

原代码问题

你写的函数存在两个核心问题:

  • 函数内部直接引用全局变量df$ride_length,未使用传入的参数x,违背函数封装逻辑
  • read.table处理时间字符串的效率较低,且易出现解析异常

解决方案

方法1:基础R实现(无需额外包)

利用strptime解析时间,拆分出时、分、秒后计算总分钟数:

# 新增分钟数列
df$ride_length_minutes <- with(strptime(df$ride_length, "%H:%M:%S"), 
                               hour * 60 + min + sec / 60)

方法2:lubridate包实现(推荐,代码更简洁)

lubridate是R中处理时间的专用包,语法更直观:

# 先安装包(首次使用时执行)
# install.packages("lubridate")
library(lubridate)

# 将时间字符串转为周期类型,再转成秒后除以60得到分钟数
df$ride_length_minutes <- period_to_seconds(hms(df$ride_length)) / 60

方法3:修正你原有的函数

如果想保留自己的函数思路,只需修正参数引用问题:

time2minutes <- function(x){
  parts <- as.matrix(read.table(text = x, sep = ":"))
  c(parts %*% c(60, 1, 1/60))
}

# 调用函数生成新列
df$ride_length_minutes <- time2minutes(df$ride_length)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 12:42:26