Apply.weekly 对于非唯一日期列?

Apply.weekly for non unique date column?

我目前有以下 data.table,每天回收 NameId

Date            Name                Id           Widgets
2016-12-31      Bob Jones           0052A00001   5
2016-12-31      James Smith         0052A00002   25
2016-12-31      Tom Wilson          0052A00003   29
...
2016-01-31      Bob Jones           0052A00001   8
2016-01-31      James Smith         0052A00002   18
2016-01-31      Tom Wilson          0052A00003   20

是否可以将 zoo 函数 apply.weekly 应用到此,因为每个日期没有唯一值?如果不是,按每周值(或另一个长度的时间段 - 比如说 4 天)汇总它并根据它创建分组的最简单方法是什么?

您可以先创建一个分组,然后再进行本周的比赛。您可以使用 cut 来获得您想要的分组。

grpWeek <- data.table(Date=seq.Date(as.Date("2016-01-01"), as.Date("2016-12-31"), by="1 day"))[,
    list(Date, 
        DT_Week=week(Date),
        Week_Num=format(Date, "%W"),
        User_Week=cut(Date, breaks=52, labels=paste0("Week",1:52)))]

dt <- fread("Date,Name,Id,Widgets
2016-12-31,Bob Jones,0052A00001,5
2016-12-31,James Smith,0052A00002,25
2016-12-31,Tom Wilson,0052A00003,29
2016-01-31,Bob Jones,0052A00001,8
2016-01-31,James Smith,0052A00002,18
2016-01-31,Tom Wilson,0052A00003,20")
dt[,Date:=as.Date(Date)]

grpWeek[dt, on="Date"]