【发布时间】:2019-10-02 22:02:20
【问题描述】:
我目前有一个具有此值的 period 对象:
"35d 17H 15M 28.9999999995343S"
我想得到一个不同的输出:
35 days 17 hours 15 minutes 28 seconds
我还希望能够对其进行格式化,以便单位采用“s”或不采用“s”,具体取决于时间单位是否 > 1。
我已经尝试使用attr(period_object, "unit") 获取对象的属性,但我无法修改 seconds,因为它们似乎不在对象中。
str(as.period(period_object))
Formal class 'Period' [package "lubridate"] with 6 slots
..@ .Data : num 29
..@ year : num 0
..@ month : num 0
..@ day : num 35
..@ hour : num 17
..@ minute: num 15
这是一个数据样本:
library(lubridate)
time1 <- as.POSIXct("2019-01-01 15:12:07")
time2 <- as.POSIXct("2019-02-06 08:27:36")
period_object <- difftime(time2, time1)
as.period(period_object)
[1] "35d 17H 15M 28.9999999995343S"
所以我想要的最终输出是:
35 days 17 hours 15 minutes 28 seconds
有人有线索吗?谢谢。
【问题讨论】:
-
可能不是最好的方法,但也许“只是”做一个
regex替换? -
谢谢。我认为这是可能的,但有点乏味,但我可能会尝试一下。再次感谢您!
标签: r time translation lubridate