润滑间隔中的总唯一时间总和
Sum total unique time in lubridate intervals
我有多个间隔,我想知道它们代表多少时间。问题是我的间隔重叠。这是一个基本示例。想象一下,我有一个时间间隔从一个小时前开始一直运行到一个小时后,而我有另一个时间间隔从现在开始运行两个小时。每个间隔时间为 2 小时。因为重叠,所以一共描述了3个小时。
library(lubridate)
interval1 <- interval(Sys.time() - hours(1), Sys.time() + hours(1))
interval2 <- interval(Sys.time(), Sys.time() + hours(2))
有没有办法将多个间隔表示的总唯一时间相加?在这个例子中我想要的答案是 3 小时。
您可以 union
这两个间隔并计算长度:
library(lubridate)
interval1 <- interval(Sys.time() - hours(1), Sys.time() + hours(1))
interval2 <- interval(Sys.time(), Sys.time() + hours(2))
my_interval <- union(interval1, interval2)
as.duration(my_interval)
# "10800.9256539345s (~3 hours)"
如果间隔不一定重叠,您可以添加两个间隔的长度并减去两者的交集:
if (is.na(intersect(interval1, interval2))) {
as.duration(interval1) + as.duration(interval2)
} else {
as.duration(interval1) + as.duration(interval2) - as.duration(intersect(interval1, interval2))
}
我有多个间隔,我想知道它们代表多少时间。问题是我的间隔重叠。这是一个基本示例。想象一下,我有一个时间间隔从一个小时前开始一直运行到一个小时后,而我有另一个时间间隔从现在开始运行两个小时。每个间隔时间为 2 小时。因为重叠,所以一共描述了3个小时。
library(lubridate)
interval1 <- interval(Sys.time() - hours(1), Sys.time() + hours(1))
interval2 <- interval(Sys.time(), Sys.time() + hours(2))
有没有办法将多个间隔表示的总唯一时间相加?在这个例子中我想要的答案是 3 小时。
您可以 union
这两个间隔并计算长度:
library(lubridate)
interval1 <- interval(Sys.time() - hours(1), Sys.time() + hours(1))
interval2 <- interval(Sys.time(), Sys.time() + hours(2))
my_interval <- union(interval1, interval2)
as.duration(my_interval)
# "10800.9256539345s (~3 hours)"
如果间隔不一定重叠,您可以添加两个间隔的长度并减去两者的交集:
if (is.na(intersect(interval1, interval2))) {
as.duration(interval1) + as.duration(interval2)
} else {
as.duration(interval1) + as.duration(interval2) - as.duration(intersect(interval1, interval2))
}