日期之间的分组日期(R)

时间:2015-06-23 20:22:25

标签: r

我的数据集如下所示:

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))))

我怎么能这样做?

由于

1 个答案:

答案 0 :(得分:4)

这是一个dplyr解决方案。首先按日期排列,然后按SKU分组,最后添加自上次购买SKU以来的日期。

library(dplyr)    
data <- data %>%
    arrange(date) %>%
    group_by(SKU) %>%
    mutate(dayssincelastpurchase=date - lag(date))