У меня есть два R data.frame
, описывающих события изменения состояния определенных объектов.df1
- это совокупность всех x to y
переходов состояний, а df2
содержит все y to anything
переходы.Я хочу исключить все x to y
переходы объекта, если за ним последовал любой y to anything
переход в течение следующих 7 дней.Оба data.frame
могут содержать несколько записей для object_id
и state_change
.Также объект может менять состояние несколько раз в день.Ниже приведен код для воспроизведения образцов входных данных.
df1 <- data.frame(object_id = c('a', 'b', 'a', 'd'),
state_change = c('x to y', 'x to y', 'x to y', 'x to y'),
event_date = c('2018-01-01', '2018-01-01', '2018-01-05', '2018-01-01'))
> df1
object_id state_change event_date
1 a x to y 2018-01-01
2 b x to y 2018-01-01
3 a x to y 2018-01-05
4 d x to y 2018-01-01
> df2 <- data.frame(object_id = c('b', 'a', 'd'),
state_change = c('y to z', 'y to x', 'y to z'),
event_date = c('2018-01-01', '2018-01-03', '2018-01-15'))
> df2
object_id state_change event_date
1 b y to z 2018-01-01
2 a y to x 2018-01-03
3 d y to z 2018-01-15
Я бы хотел изменить df1
на следующий, поскольку для перехода object_id = d
, x to y
не последовал переход y to anything
в следующем7 дней:
> df1
object_id state_change event_date
1 d x to y 2018-01-01
Я новичок в анализе временных рядов в R, и это кажется фундаментальным вопросом.Любая помощь приветствуется.