2

次のいくつかのキー列で構成される次の表があります。注文ID | 製品ID | 数量 | 金額 | 注文日。

このデータはすべて LONG 形式であり、1 つの顧客 ID に対して複数の項目が取得されます。

R DateDiff を使用して最初の日付と最後の日付を取得できますが、Plyr を使用してファイルを WIDE 形式に変換しても、顧客ごとに複数の注文を取得するという同じ問題が発生し、行が少なくなり、列が増えます。

R DateDiff を拡張して、顧客 ID による購入間の時間間隔を取得する方法を解決する R 関数はありますか? つまり、オーダー 1 と 2、オーダー 2 と 3 の間の時間など、これらのオーダーが存在すると仮定します。

CID     Order.Date  Order.DateMY    Order.No_    Amount Quantity  Category.Name    Locality
1       26/02/13    Feb-13          zzzzz                   1       r                 MOSMAN
1       26/05/13    May-13          qqqqq                   1       x               CHULLORA
1       28/05/13    May-13           wwwww                  1       r               MOSMAN
1       28/05/13    May-13           wwwww                  1       x                 MOSMAN
2       19/08/13    Aug-13          wwwwww                  1       o                OAKLEIGH SOUTH
3       3/01/13    Jan-13           wwwwww                  1       x                 CURRENCY CREEK
4       28/08/13    Aug-13         eeeeeee                  1       t                 BRISBANE
4       10/09/13    Sep-13         rrrrrrrrr                1       y               BRISBANE
4       25/09/13    Sep-13         tttttttt                 2       e               BRISBANE
4

3 に答える 3

2

期待した結果が得られないため、何をしたいのか明確ではありません。しかし、2 つの注文の間の間隔が必要だと思います。

library(data.table)
DT <- as.data.table(DF)
DT[, list(Order.Date,
          diff = c(0,diff(sort(as.Date(Order.Date,'%d/%m/%y')))) ),CID]

   CID Order.Date diff
1:   1   26/02/13    0
2:   1   26/05/13   89
3:   1   28/05/13    2
4:   1   28/05/13    0
5:   2   19/08/13    0
6:   3    3/01/13    0
7:   4   28/08/13    0
8:   4   10/09/13   13
9:   4   25/09/13   15
于 2013-07-01T09:33:06.530 に答える