r - 润滑间隔中的总唯一时间
问题描述
我有多个间隔,我想知道它们代表了多少时间。问题是我的间隔重叠。这是一个基本的例子。想象一下,我有一个从一小时前开始并运行到现在一小时的时间间隔,而我有另一个从现在开始并运行两个小时的时间间隔。每个间隔为 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))
}
推荐阅读
- python - 如何有效地改变matplotlib中许多重叠圆圈的颜色
- javascript - Window.location.replace 不会重定向我给定的网址
- python - 从一个方向读取线程时是否需要技术(如队列、锁定等)
- gps - GPS - NMEA GST 位置错误到 NED 帧
- mysql - 具有更多 where 条件的 sql 是否比 mysql 中更少的条件更快?
- c++ - 交叉产品混淆
- go - 如何在 golang 中编写 throws(in java) 之类的代码
- react-native - 从数据库中获取数据后没有任何反应
- azure - 在使用 az 从命令行创建 HDInsight spark 4.0 群集时提供外部配置单元元存储
- javascript - Safari 12.1 卸载不触发 javascript