gpt4 book ai didi

r - R中一个事件与另一个事件的匹配时间间隔

转载 作者:行者123 更新时间:2023-12-04 09:15:14 24 4
gpt4 key购买 nike

我是在尝试做不可能的事吗?如果 event2 或 event2 之前 10 天的时间段与 event1 中的日期相交,我想将 df1 中的事件与 df2 中的事件进行匹配。我已经粘贴了来自两个数据集的样本。我在这个论坛上看过但找不到与这个问题类似的东西,所以也许这是不可能的。先感谢您!

head(df1)
# A tibble: 6 x 1
# Groups: event1 [6]
event1
<date>
1 1980-01-10
2 1980-01-13
3 1980-01-14
4 1980-02-18
5 1980-02-27
6 1980-03-02

head(df2)

event2
1 1980-01-16
2 1980-01-18
3 1980-01-19
4 1980-02-12
5 1980-09-26
6 1980-10-23
我想我想要的是这样的(使用前三个 event2s):
ev_1 <- interval(ymd('1980-01-06'), ymd('1980-01-16'))
ev_2 <- interval(ymd('1980-01-08'), ymd('1980-01-18'))
ev_3 <- interval(ymd('1980-01-09'), ymd('1980-01-19'))
然后,我想查看是否有任何 event1 日期发生在间隔期间。在 40 年的时间里,我总共有大约 60 个 event2 日期和数百个 event1 日期。
我能够使用说明 here 想出这个,但这是最好的方法吗?如果是这样,是否可以将其自动化,以便我不必手写所有 60 个间隔?
> dates_test <- ymd(c("1980-01-10", "1980-01-13", "1980-01-14", "1980-02-18"))
> interval_test<- list(interval(ymd('1980-01-06'), ymd('1980-01-16')),
interval(ymd('1980-01-09'), ymd('1980-01-19')))
> dates_test %within% interval_test
[1] TRUE TRUE TRUE FALSE

最佳答案

您可以创建 event1 和 event2 的所有可能组合,然后在 event2 在 event1 之后 10 天或更短时保留行。

combinations <- expand.grid(df1$event1, df2$event2)
matches <- combinations[combinations[,2] >= combinations[,1] & combinations[,2] - combinations[,1] <= 10,]
matches

Var1 Var2
1 1980-01-10 1980-01-16
2 1980-01-13 1980-01-16
3 1980-01-14 1980-01-16
7 1980-01-10 1980-01-18
8 1980-01-13 1980-01-18
9 1980-01-14 1980-01-18
13 1980-01-10 1980-01-19
14 1980-01-13 1980-01-19
15 1980-01-14 1980-01-19

关于r - R中一个事件与另一个事件的匹配时间间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63255439/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com