如何 link 合并日期并获取相关计算字段?

How to link dates with merge and get relevant calculated field?

假设我有 4 个客户(ID - 1,2,3,4) 我有两个 tables 中的数据:

Table 1 - lists down the dates of Purchase of A( only once a year)
ID     Date of Purchase 
1       10-03-2014
2       15-05-2014  
3       13-09-2014
4       15-10-2015

Table 2 - lists down dates of purchase of B( can be multiple times )
ID     Date of Purchase 
1       10-01-2014
1       15-05-2014  
1       15-10-2014
2       13-06-2014
2       15-10-2015
3       23-11-2014 
4       22-09-2016

我需要的是 table 给予:

具有条件

的客户的日期差异(购买 A 与购买 B)
  1. B 的购买日期应大于 A 的购买日期

  2. 日期上的差异应该是第一次购买 B(购买 A 之后)

ID 1 的示例 - 1. 购买 A 是在第 3 个月。第 3 个月后首次购买 B 是在第 5 个月,所以相差 2 个月(或同等天数)

ID 2 的示例 - 购买 A 是在第 5 个月,第一次购买 B 是在第 6 个月,所以相差 1 个月(或同等天数)

Table3 
ID   Difference days 
1      60
2      30 

我如何在 R 中得到它?

您可以使用这种方法:

tab1 <- data.frame(ID= c(1,2,3,4),  Date_of_Purchase = as.Date( c("10-03-2014","15-05-2014","13-09-2014","15-10-2015"), format = "%d-%m-%Y"))
tab2 <- data.frame(ID= c(1,1,1,2,2,3,4),  Date_of_Purchase = as.Date( c("10-01-2014","15-05-2014 ","15-10-2014","13-06-2014","15-05-2014 ","15-10-2014","13-06-2014"), format = "%d-%m-%Y"))
library("dplyr")    
tab <- tab1 %>% left_join(tab2, c("ID" = "ID"))
tab$dif <- tab$Date_of_Purchase.y- tab$Date_of_Purchase.x 

然后按 id 和 select 最小

分组
tab <- filter(tab, dif > 0)
tab3 <-   tab %>%
  dplyr::group_by(ID) %>%
  dplyr::summarise(min = min(dif))

结果:

     ID      min
  <dbl>   <time>
1     1  66 days
2     2  29 days
3     3  71 days
4     4 343 days