1

我在转换数据框时遇到问题。我想计算每个客户购买的频率(多少天一次)。我认为将我的交易数据转换为以下格式是最简单的:

Transatcion_ID  Client_ID    Date
1               1            2017-01-01
2               1            2017-01-04
3               2            2017-02-21
4               1            2017-05-01
5               3            2017-02-04
6               3            2017-03-01
...             ...          ...

至 :

Client_ID    Date_1_purchase     Date_2_purchase     Date_3_purchase         ...
1            2017-01-01          2017-01-04          2017-05-01              ...
2            2017-02-21          NA                  NA                      ...
3            2017-02-04          2017-03-01          NA                      ...

或者:

Client_ID    Date_First_purchase     Date_Last_purchase     Numberof_orders
1            2017-01-01              2017-05-01              3
2            2017-02-21              2017-02-21              1   
3            2017-02-04              2017-03-01              2  

我曾尝试使用 dcast,但无法达到我想要的效果。我敢打赌有一种方法可以做到这一点,或者在不转换数据集的情况下计算我想要的东西,但我没有找到它。

4

1 回答 1

0

我们可以创建一个从“长”rowiddcast“宽”格式的序列ID

library(data.table)
dcast(setDT(df1), Client_ID ~ paste0("Date_", rowid(Client_ID), 
                                  "_purchase"), value.var = "Date")
#   Client_ID Date_1_purchase Date_2_purchase Date_3_purchase
#1:         1      2017-01-01      2017-01-04      2017-05-01 
#2:         2      2017-02-21              NA              NA
#3:         3      2017-02-04      2017-03-01              NA
于 2017-06-11T12:29:29.977 回答