润滑日期间隔的平均值

时间:2018-10-17 19:41:03

标签: r lubridate

如何获得润滑间隔对象的“平均值”(或更准确地说是中点)?我已经尝试过使用基本的mean()函数,但是会返回双精度值。

library(lubridate)   
ex = interval(ymd("2009-05-01"), ymd("2009-07-01"))
mean(ex)
[1] 5270400

2 个答案:

答案 0 :(得分:2)

您可以使用int_start()int_end()函数来计算间隔的中点:

library(lubridate)
int_start(ex) + (int_end(ex) - int_start(ex))/2
[1] "2009-05-31 12:00:00 UTC"

为简单起见,您可以将其变成一个简单的函数:

int_midpoint <- function(interval) {
    int_start(interval) + (int_end(interval) - int_start(interval))/2
}

int_midpoint(ex)
[1] "2009-05-31 12:00:00 UTC"

此功能还可以与矢量上的lapply(尽管不是sapply)一起使用:

lapply(c(ex, ex), int_midpoint)
[[1]]
[1] "2009-05-31 12:00:00 UTC"

[[2]]
[1] "2009-05-31 12:00:00 UTC"

答案 1 :(得分:2)

一个选择是将interval持续时间的一半添加到开始日期。试试:

ex@start + as.duration(ex)/2
[1] "2009-05-31 12:00:00 UTC"