在 lubridate 中设置差异

问题描述 投票:0回答:1

试图找出为什么这不起作用。我想做的是将

test_int_1
分成 3 段 -> 在
test_init_2
之前,
test_init_2
,在
test_init_2
之后。

library(lubridate)

test_int_1 <- interval(ymd_hms('2024-04-29 17:01:00'), ymd_hms('2024-04-29 18:00:00'))
test_int_2 <- interval(ymd_hms('2024-04-29 17:28:00'), ymd_hms('2024-04-29 17:56:00'))
test_int_2 %within% test_int_1

setdiff(test_int_1, test_int_2)
# Error in setdiff.Interval(test_int_1, test_int_2) : 
#  Cases 1 result in discontinuous intervals.

不确定我是否理解正确

setdiff

r intervals lubridate
1个回答
0
投票

使用

lubridate
函数执行此操作的一种方法如下...

int_diff(sort(c(int_start(c(test_int_1, test_int_2)),
                int_end(c(test_int_1, test_int_2)))))

[1] 2024-04-29 17:01:00 UTC--2024-04-29 17:28:00 UTC
[2] 2024-04-29 17:28:00 UTC--2024-04-29 17:56:00 UTC
[3] 2024-04-29 17:56:00 UTC--2024-04-29 18:00:00 UTC

这只是创建间隔端点的排序向量,并使用它们来创建您正在寻找的三个间隔。

© www.soinside.com 2019 - 2024. All rights reserved.