如何 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)
B 的购买日期应大于 A 的购买日期
日期上的差异应该是第一次购买 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
假设我有 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)B 的购买日期应大于 A 的购买日期
日期上的差异应该是第一次购买 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