假设我有4位客户(ID - 1,2,3,4) 我有两个表中的数据:
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
我需要的是一张表:
条件
的客户的日期差异(从购买B购买A)B的购买日期应>然后购买日期为
日期的差异应该是首次购买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中获得?
答案 0 :(得分:1)
你可以使用这种方法:
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分组并选择min
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