2017-02-02 19 views
0

В настоящее время у меня есть data.table с Name и Id рециркуляция в день.Apply.weekly для столбца с уникальной датой?

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 дня) и создавать группировки в соответствии с этим?

+0

Я не уверен, что 'apply.weekly' работает на' data.frame' или 'data.table'. Вы можете конвертировать 'Date' в недельные значения, а затем использовать функцию' aggregate'. –

ответ

1

Вы можете создать группировку сначала, прежде чем будете совпадать в течение недели. Вы можете поиграть с 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"] 

 Смежные вопросы

  • Нет связанных вопросов^_^