从毫秒到分钟

时间:2017-02-28 02:40:48

标签: r

我有几小时的时间数据:分钟:秒:毫秒。我还有一个描述每个时间点发生的事情。我的数据集示例如下:

StartTime <- c("00:00:00:00", "00:00:14:04", "00:01:51:06", "00:03:30:02")
Events <- c("Start whistle", "Pass", "Shot", "Pass")
RawData <- data.frame(StartTime, Events)

我现在希望根据StartTime列中播放的分钟数创建一个新列。我的预期输出是:

MinutesPlayed <- c(0, 0, 2, 3)

我尝试使用以下代码进行舍入,但是它包含日期(我的工作不需要),并且仍然以H:M:S格式保留时间。

RawData$MinutesPlayed <- strptime(RawData$StartTime, "%H:%M:%S")

我哪里出错?

2 个答案:

答案 0 :(得分:3)

如果你进行四舍五入,那么最后一个元素应该达到4(从30.02秒到1分钟)。这是一个使用strptime()的想法,将会议记录四舍五入。

## replace the last colon with a decimal point
st <- sub("(.*):(.*)", "\\1.\\2", StartTime)
## convert to POSIXlt and grab the rounded minutes
round(strptime(st, "%H:%M:%OS"), "mins")$min
# [1] 0 0 2 4

答案 1 :(得分:1)

sapply(strsplit(as.character(RawData$StartTime),":"), function(x)
       #Use 'ceiling' or 'round' instead of 'floor' as needed
       floor(as.numeric(x[1])*60 + #hours to minutes
       as.numeric(x[2]) + #minutes
       as.numeric(x[3])/60 + #seconds to minutes
       as.numeric(x[4])/60000)) #milliseconds to minutes
#[1] 0 0 1 3