我的数据集如下所示:
ID | SKU | PurchaseDate
84 | TRP | 42027
84 | LTH | 42027
84 | IB229US | 42027
84 | IB229US | 42104
要将上述代码段作为数据框加载,代码为:
id<-c(84,84,84,84,84,84)
date<-c(42027, 42027, 42027, 42104, 42123, 42167)
SKU<- c("TRP", "LTH", "IB229US", "IB229US", "BTH", "IB229US")
data<-data.frame(id,date,SKU)
我试图计算回购相同SKU之间的平均天数。 现在我能够找到一般回购之间的日子,但不能通过SKU使用:
data$dayssincelastpurchase<-unlist(by(data$date,data$ID,
function(x) c(NA,diff(x))))
我怎么能这样做?
由于
答案 0 :(得分:4)
这是一个dplyr
解决方案。首先按日期排列,然后按SKU分组,最后添加自上次购买SKU以来的日期。
library(dplyr)
data <- data %>%
arrange(date) %>%
group_by(SKU) %>%
mutate(dayssincelastpurchase=date - lag(date))