【发布时间】:2015-06-25 19:08:49
【问题描述】:
我的目标是获取购买给定产品所需的平均天数。如果 Product_A 在给定时间段内购买了 3 次(“2012-12-01”、“2012-12-05”、“2012-12-10”),那么我们的平均订单间隔将是 4 和 5 - 4.5 天的平均值.
我编写了一个 For 循环来计算两点之间的间隔(我可以使用聚合函数来计算我的平均值或乘积的中位数),但我一直收到长度错误。这应该是一个可扩展的解决方案
这是一个示例数据框:
product_info <- data.frame(productId = c("A", "A", "A", "B","B","B"),
order_date = c("2014-05-01", "2014-05-05", "2014-05-10", "2014-06-01","2014-06-07", "2014-06-18"), stringsAsFactors=FALSE)
这是我的代码:
for (i in 2:length(unique(product_info$productId))){
if(product_info$productId[i]==product_info$productId[i-1]){
product_info$interval[i] <- as.integer(difftime(product_info$order_date[i],product_info$order_date[i-1]))
}
}
我想要的输出应该是:
product_info <- data.frame(productId = c("A", "A", "A", "B","B","B"),
order_date = c("2014-05-01", "2014-05-05", "2014-05-10", "2014-06-01","2014-06-07", "2014-06-18"),
interval= c("0", "4", "5", "0","6","11"), stringsAsFactors=FALSE)
非常感谢任何帮助。
谢谢
【问题讨论】: