如何处理R中的每个距离数据的时间



我有时间有时间,例如11:42.7(格式为"%m:%OS"(需要一定距离(例如3000 m(。现在,我希望能够计算拆分时间(例如每500 m所需的时间(。

timeVar  <- "11:42.7"
distance <- 3000

我尝试过该计算:

(strptime(timeVar, "%M.%S")/distance)*500

但这返回:ops.posixt中的错误(strptime(TimeVar,"%M.%s"(,距离(: '/'未针对" posixt"对象定义。

使用软件包润滑剂,我可以计算以下内容:

library(lubridate)
(as.duration(ms(timeVar))/distance)*500

返回[1]" 117.1166666666667S(〜1.95分钟(",但我希望结果以格式("%M:%OS"(。是否有需要处理此问题的方法?例如,我想绘制我在其中一个轴上使用格式的数据,但我也想使用数据进行回归分析。Posixt格式可以使用类似的事情。

您可以seconds_to_period(在 lubridate 中(将其分为几分钟/秒。然后,使用sprintf按照您的意愿进行格式化,如下所示:

time <- seconds_to_period((as.duration(ms(timeVar))/distance)*500)
sprintf('%02d:%2.1f', minute(time), second(time)) # 01:57.1
#or using paste0
paste0(minute(time),':',round(second(time),1))  # 1:57.1
#or if you want it with hours
paste0(time@hour,':',minute(time),':',round(second(time),1)) # 0:1:57.1

希望它有帮助。

如果转换为 period,则可以使用 sprintf

library(lubridate)
d <- as.period(as.duration(ms(timeVar))/distance*500)
sprintf('%02d:%2.1f', minute(d), ms(d))
# "01:57.1"

我使用HMS软件包找到了一个解决方案:

library(hms)
timeVar1 <- strptime(timeVar, "%M:%OS")
timeVar1 <- as.hms(timeVar1)
split500 <- (timeVar1/distance)*500
# Time difference of 117.1167 secs
split500 <- as.hms(split500)
# 00:01:57.116667

最新更新