每天计算和汇总 ID,同时创建一个显示累积 ID 的新列

数据挖掘 r
2021-09-17 19:02:30

我有两列,第一列是客户的 ID,第二列是购买日期。

    ID       Date
     1 2017-01-17
     2 2017-01-17
     3 2017-01-17
     4 2017-01-17
     5 2017-01-17
     1 2017-01-17
     7 2017-01-17
     1 2017-01-17
     9 2017-01-18
     2 2017-01-18
     3 2017-01-18
     5 2017-01-18
     1 2017-01-18
     2 2017-01-18

我想总结某一天的Purchases制作,Customer并创建第三列显示该amount of purchases日期的客户。

1个回答

这是您问题的基本解决方案:

aggregate(paste(ID , Date) ~ ID + Date, data = df, FUN = length)

还有更多解决方案,例如以下任何解决方案,使用

library(dplyr)
df %>%  group_by(ID, Date) %>% summarise(PurchaseCount = n())
df %>% group_by(ID, Date) %>% tally(name="PurchaseCount")
df %>% group_by(ID, Date) %>% count(name="PurchaseCount")
df %>% group_by(ID, Date) %>% add_tally(name="PurchaseCount")
df %>% group_by(ID, Date) %>% add_count(name="PurchaseCount")

或通过使用包裹:

library(data.table)
setDT(df)[, PurchaseCount:=.N, by = list(ID, Date)]

或使用包裹:

library(sqldf)
sqldf("SELECT ID, Date, COUNT(*) as PurchaseCount
       FROM df
       GROUP BY Date, ID")

或者

plyr::count(df, c('ID','Date'))

我个人更喜欢data.table它,因为它直接写入数据帧并且通常很省时。aggregate当您想避免加载新库时也是有利的。dplyr通常使您的代码更易读,因为它使用管道个人意见