我目前卡在R中有一个非常具体的问题:我有一个大约的数据集. 250万行,显示有关购买行程的基于事件的数据.格式如下(为简单起见,我排除了大多数人口统计数据和一些其他变量):
UserID PurchaseID Time of Contact Purchase Age
1 1 2015-08-07 19:16:59 0 35
1 1 2015-08-07 21:17:32 0 35
1 1 2015-08-07 22:42:51 0 35
1 1 2015-08-07 23:06:13 0 35
1 2 2016-05-26 11:01:16 1 35
1 2 2016-06-02 19:57:25 1 35
1 2 2016-06-15 15:48:20 1 35
1 2 2016-06-21 08:39:44 1 35
2 3 2015-11-14 11:32:10 0 51
2 3 2015-11-14 11:32:20 0 51
2 3 2015-11-14 11:33:50 0 51
我想分析每个单独旅程的联系人之间的平均时间如何影响购买概率.因此,我想计算每个客户旅程的总长度(例如,购买ID 1的开始时间直到PurchaseID 1的结束时间).之后我想聚合数据,看起来如下:
UserID PurchaseID Customer journey length Purchase Age
1 1 03:49:14 0 35
1 2 621:38:28 1 35
2 3 00:01:40 0 51
老实说,我不知道从哪里开始,所以我希望你能帮助我!非常感谢!
最佳答案 这应该做的工作(使用非常小的样本,请测试这个):
library(dplyr)
library(lubridate)
df <- data.frame(userID=c(1,1),
PurchaseID=c(1,1),
Contactime= c(ymd_hms("2015-08-07 19:16:59"), ymd_hms("2015-08-07 21:16:59")),
Purchase=c(0,0),
Age=c(35, 35))
timesummary<- df %>%
group_by( userID,PurchaseID, Purchase, Age) %>%
summarise(journeylength= as.numeric(difftime(max(Contactime),min(Contactime), units="secs")))
请注意,我已经以秒的形式给出了行程长度,这可以改变.