我有篮球比赛的时间清单。以下是一些示例时间值,用于显示它们的存储方式:"11:44.0"
,"10:03.0"
,"8:35.0"
,"6:19.0"
,"0:49.9"
,"0:03.9"
< / p>
(分钟-前导0):(秒-前导0)。(十分之一秒)
它对%M:%OS格式的响应很好,但是最后我得到了一个完整的日期,只剩下定时器数据。这很不方便,主要是因为它看起来很糟(如果有任何图形或表格自动生成以包含日期),并且如果我在多天内使用它,则必须确保所有值都具有相同的日期,以便彼此适当减去。
> strptime("0:49.9", format = "%M:%OS")
[1] "2018-08-13 00:00:49.9 EDT"
我想将其保留为时间格式,以便于操作。似乎截断方法(例如strptime
的{{1}})将其转换为字符串,而且我认为format
中的times
类不能处理毫秒(或就我而言,十分之一秒)。
答案 0 :(得分:1)
我们可以使用ms
中的lubridate
函数,以便以后进行操作。
library(lubridate)
ms(x)
#[1] "11M 44S" "10M 3S" "8M 35S" "6M 19S" "49.9S" "3.9S"
所以让我们说稍后您想向所有这些添加2分钟,您可以这样做
ms(x) + minutes(2)
#[1] "13M 44S" "12M 3S" "10M 35S" "8M 19S" "2M 49.9S" "2M 3.9S"
数据
x <- c("11:44.0", "10:03.0", "8:35.0", "6:19.0", "0:49.9", "0:03.9")
答案 1 :(得分:0)
在阅读了有关此问题的不同主题之后,我得出的结论是,没有日期就没有好的方法来表示日期时间。在某种程度上,所有日期时间格式至少在基础级别上都跟踪日期,即使未显示也是如此。任何能够真正截断它的方法(我能找到)最终都会将值转换回字符串。
我将其保留为当前字符格式,并在需要时在其上调用strptime。看起来像这样:
graph <- ggplot(data, strptime(times, format = "%M:%OS"), scores) + geomline()
ggplot足以自动识别它们都是相同的日期,因此它仅显示时间。将其转换为数字可能会起作用,但随后我需要以十分之一秒(因此12:00.00-> 7200十分之一秒)来度量它,并执行其他转换以以可口的时间格式显示它(比“ 2570十分之一秒变成四分之一”更容易阅读“ 7:43”)