r - 在 R 中计算互购时间

标签 r

我有以下数据框:

id<-c(1,1,1,3,3,3)
date<-c("23-01-07","27-01-07","30-01-07","11-12-07","12-12-07","01-01-08")
df<-data.frame(id,date)
df$date2<-as.Date(as.character(df$date), format = "%d-%m-%y")


id    date      date2
1 23-01-07 2007-01-23
1 27-01-07 2007-01-27
1 30-01-07 2007-01-30
3 11-12-07 2007-12-11
3 12-12-07 2007-12-12
3 01-01-08 2008-01-01

现在我需要计算每个id的交易间隔时间(一个客户的每笔交易与同一客户的上一笔交易之间的天数);这样我得到以下结果:

id    date      date2  interpurchase.time
1 23-01-07 2007-01-23         0
1 27-01-07 2007-01-27         4 
1 30-01-07 2007-01-30         3
3 11-12-07 2007-12-11         0  
3 12-12-07 2007-12-12         1 
3 01-01-08 2008-01-01        20

我想知道是否有人可以帮助我。

最佳答案

你可以使用plyr:

library(plyr)
ddply(df, "id", transform, inter.time = c(0, diff(date2)))

ave:

transform(df, inter.time = ave(as.numeric(date2), id,
                               FUN = function(x)c(0, diff(x))))

都给

#   id     date      date2 inter.time
# 1  1 23-01-07 2007-01-23          0
# 2  1 27-01-07 2007-01-27          4
# 3  1 30-01-07 2007-01-30          3
# 4  3 11-12-07 2007-12-11          0
# 5  3 12-12-07 2007-12-12          1
# 6  3 01-01-08 2008-01-01         20

P.S.:您可能想用 NA 替换这些零。

关于r - 在 R 中计算互购时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13773535/

相关文章:

R多y轴交互图

c - 如何将打印的 vector 列与 sprintf (R) 对齐

R 编程 : What Happens to a dangling child environment when its parent has been removed?

根据首次发病对数据进行排名

r - 在 R 中打印小数点逗号而不是小数点

r - 更改 ggplot2 中绘制的一组因素的顺序

r - 在 grid.draw 中显示美元符号

python - 自动维恩图文本渲染

r - 使用 R 的轨迹/最佳拟合平均增长曲线和意大利面条图可视化纵向数据

逐行读取txt文件,每隔一行使用跳过功能,并使用R将输出保存为数据帧