lubridate 中日期间隔的平均值
Mean of date interval in lubridate
如何获得润滑间隔对象的 'mean'(或更准确地说是中点)?我试过使用基本的 mean() 函数,但是 return 返回了一个 double.
library(lubridate)
ex = interval(ymd("2009-05-01"), ymd("2009-07-01"))
mean(ex)
[1] 5270400
您可以使用 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"
一种选择是将interval
持续时间的一半添加到开始日期。试用:
ex@start + as.duration(ex)/2
[1] "2009-05-31 12:00:00 UTC"
如何获得润滑间隔对象的 'mean'(或更准确地说是中点)?我试过使用基本的 mean() 函数,但是 return 返回了一个 double.
library(lubridate)
ex = interval(ymd("2009-05-01"), ymd("2009-07-01"))
mean(ex)
[1] 5270400
您可以使用 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"
一种选择是将interval
持续时间的一半添加到开始日期。试用:
ex@start + as.duration(ex)/2
[1] "2009-05-31 12:00:00 UTC"