Я ищу векторизованное решение следующей проблемы. Есть клиенты, которые могут иметь один или два разных продукта, x или y, одновременно. Я хотел бы идентифицировать все строки продукта x, за которыми следует продукт y для одного и того же покупателя. В этом случае to_date
продукта x будет таким же, как from_date
продукта y. Вот пример:
customerid = c(rep(1,2),rep(2,3))
product = c("x", "y", "x", "x", "y")
from_date = as.Date(c("2000-01-01", "2000-06-07","2001-02-01","2005-01-01","2005-11-01"))
to_date = as.Date(c("2000-06-07", "2000-10-31","2002-04-01","2005-11-01","2006-01-01"))
data.frame(customerid, product, from_date, to_date)
customerid product from_date to_date
1 1 x 2000-01-01 2000-06-07
2 1 y 2000-06-07 2000-10-31
3 2 x 2001-02-01 2002-04-01
4 2 x 2005-01-01 2005-11-01
5 2 y 2005-11-01 2006-01-01
Желаемый результат будет выглядеть следующим образом:
customerid product from_date to_date followed_by_y
1 1 x 2000-01-01 2000-06-07 yes
2 1 y 2000-06-07 2000-10-31 no
3 2 x 2001-02-01 2002-04-01 no
4 2 x 2005-01-01 2005-11-01 yes
5 2 y 2005-11-01 2006-01-01 no
На данный момент мой подход заключается в группировке data.frame по costumerid
с помощью dplyr. Но тогда я не знаю, как проверить to_date
на равные значения в from_date
.