我有以下数据框:
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/