减去超过60分钟的时间

时间:2016-12-20 19:53:54

标签: r time

我有一个数据集,其中包含足球赛事的时间安排。一场比赛超过60分钟,我试图计算间隔。这是我的数据:

data <- c("11:14", "17:27", "25:34", "39:17", "39:59", "42:32", "50:15", "50:53", "64:22", "67:39")

我的问题来自于分钟超过60(它们可以在0到90分钟之间)。基本上,我希望代码可以打印出事件之间的间隔:

"6:13", "8:07", "13:43",..., "3:17"

将数据转换为小时然后从那里开始会更好吗?只是一个想法,我必须让它更容易。我已经看过其他问题了,但是我找不到任何被问过的问题。如果有,我错过了,请随意批评,但请把副本链接给我。

提前致谢!

3 个答案:

答案 0 :(得分:2)

看看lubridate这种事情。

这可能是一种更简单的方法,但这样做有效:

library(lubridate)
data <- c("11:14", "17:27", "25:34", "39:17", "39:59", "42:32", "50:15", "50:53", "64:22", "67:39")
out <- seconds_to_period(diff(as.numeric(ms(data)))

如果您希望输出为格式化字符串而不是句点,请使用sprintf:

sprintf('%02d:%02d', minute(out), second(out))

答案 1 :(得分:1)

这可能也有用

dsc

答案 2 :(得分:0)

另一个基础R尝试使用as.difftime明确指定单位:

out <- diff(sapply(strsplit(data, ":"), function(x) 
  Reduce(`+`, Map(as.difftime, as.numeric(x),  units=c("mins","secs"))))
)

# time difference in seconds
out
#[1] 373 487 823  42 153 463  38 809 197

# formatted string
sprintf("%d:%02d", out %/% 60, out %% 60)
#[1] "6:13"  "8:07"  "13:43" "0:42"  "2:33"  "7:43"  "0:38"  "13:29" "3:17"