イベントがデータフレームの日付の列として保存されているときに、連続するイベント間の時間を取得する方法を理解しようとしています。
sampledf=structure(list(cust = c(1L, 1L, 1L, 1L), date = structure(c(9862,
9879, 10075, 10207), class = "Date")), .Names = c("cust", "date"
), row.names = c(NA, -4L), class = "data.frame")
私は答えを得ることができます
as.numeric(rev(rev(difftime(c(sampledf$date[-1],0),sampledf$date))[-1]))
# [1] 17 196 132
しかし、それは本当に醜いです。特に、ベクトルの最初の項目を除外する方法しか知りませんが、最後の項目を除外する方法はわかりません。そのため、最後の値を削除するには、rev()を2回実行する必要があります。
もっと良い方法はありますか?
ちなみに、私はddplyを使用して、各cust idのより大きなデータセットに対してこれを行うので、ソリューションはddplyで動作する必要があります。
library(plyr)
ddply(sampledf,
c("cust"),
summarize,
daysBetween = as.numeric(rev(rev(difftime(c(date[-1],0),date))[-1]))
)
ありがとうございました!