我有一个数据集,其中包含足球赛事的时间安排。一场比赛超过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"
将数据转换为小时然后从那里开始会更好吗?只是一个想法,我必须让它更容易。我已经看过其他问题了,但是我找不到任何被问过的问题。如果有,我错过了,请随意批评,但请把副本链接给我。
提前致谢!
答案 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"