将小时:分钟:秒转换为分钟

Posted

技术标签:

【中文标题】将小时:分钟:秒转换为分钟【英文标题】:Convert hours:minutes:seconds to minutes 【发布时间】:2015-05-18 00:13:40 【问题描述】:

我有一个格式为小时:分钟:秒的向量“Time.Training”(例如

Time.Training <- c("1:00:00", "0:45:00", "0:30:00", "1:30:00")

我想把它转换成分钟格式:

Time.Training.Minutes <- c(60, 45, 30, 90)

我想知道是否有人在 R 中有一种直接的方法。

非常感谢。

马特

【问题讨论】:

Time.Training 向量正在使用 url 从 Google 表格中提取。它以 hh:mm:ss 格式进入 R。希望将其转换,以便我可以计算运动员的训练负荷,但我需要在几分钟内完成。 【参考方案1】:

从日期时间列中获取小时列并创建一个新的 cloumn 小时并在该列中仅提供小时数据 2011-01-01 00:00:01 答: bikeshare$hour

【讨论】:

【参考方案2】:

使用 as.difftime:

> Time.Training<- c("1:00:00", "0:45:00", "0:30:00", "1:30:00")
> strtoi(as.difftime(Time.Training, format = "%H:%M:%S", units = "mins"))
[1] 60 45 30 90

【讨论】:

【参考方案3】:

这里有一些替代方案:

1) chron 包有一个 "times" 类,其中 1 个单位是一天,一天有 60 * 24 分钟,所以:

library(chron)
60 * 24 * as.numeric(times(Time.Training))

给予:

[1] 60 45 30 90

1a) 另一种使用 chron 的方法如下(给出相同的答案):

library(chron)

ch <- times(Time.training)
60 * hours(ch) + minutes(ch)

2) 这是一种使用read.table 和矩阵/向量乘法的方法。不需要任何软件包:

c(as.matrix(read.table(text = Time.Training, sep = ":")) %*% c(60, 1, 1/60))

(使用"POSIXlt" 可能是没有包的最直接的方法,但另一个答案已经提供了。)

【讨论】:

【参考方案4】:

使用lubridate:

Time.Training<- c("1:00:00", "0:45:00", "0:30:00", "1:30:00")

library(lubridate)
res <- hms(Time.Training)        # format to 'hours:minutes:seconds'
hour(res)*60 + minute(res)       # convert hours to minutes, and add minutes
## [1] 60 45 30 90

【讨论】:

这行得通。我使用的确切代码是: library(lubridate); res 不客气。在问题中给出的示例中,@David Arenburg 的方法也有效。如果您想根据实际数据获得答案,您应该考虑使用dput()(至少在数据的子集上)。【参考方案5】:

试试这个。我们基本上转换为POSIXlt 类,首先使用Sys.Date() 函数将真实日期粘贴到向量中(因为在基础R 中没有小时类),然后使用hourmin 参数以实现输出

Res <- as.POSIXlt(paste(Sys.Date(), Time.Training))
Res$hour*60 + Res$min
## [1] 60 45 30 90

【讨论】:

数据表称为'load',变量称为'Time.Spent.Training'。我使用了命令:attach(load) 后跟 Res 您需要从数据集中调用您的列。试试load$Time.Spent.Training,而不是Time.Spent.Training

以上是关于将小时:分钟:秒转换为分钟的主要内容,如果未能解决你的问题,请参考以下文章

如何将秒转换为小时、分钟和秒?

将天、小时、分钟和秒转换为整数

将秒值转换为小时分钟秒?

如何将 270921sec 转换为天 + 小时 + 分钟 + 秒? (红宝石)

在 Python 中将秒转换为天、小时、分钟和秒 [关闭]

使用 Duration 对象在 Java 中将天、分钟、小时转换为秒失败