我有一个数据表:
> Data_train[order(Date)]
Store DayOfWeek Date Sales Customers Open Promo StateHoliday SchoolHoliday
1: 1 2 2013-01-01 0 0 0 0 a 1
2: 2 2 2013-01-01 0 0 0 0 a 1
3: 3 2 2013-01-01 0 0 0 0 a 1
4: 4 2 2013-01-01 0 0 0 0 a 1
5: 5 2 2013-01-01 0 0 0 0 a 1
---
1017205: 1111 5 2015-07-31 5723 422 1 1 0 1
1017206: 1112 5 2015-07-31 9626 767 1 1 0 1
1017207: 1113 5 2015-07-31 7289 720 1 1 0 1
1017208: 1114 5 2015-07-31 27508 3745 1 1 0 1
1017209: 1115 5 2015-07-31 8680 538 1 1 0 1
我需要创建一个新变量,其中每个 42天<{1}}的总和
sales
但它给了我一个错误:
> Data_train[,Sales_6_weeks:=sum(Sales),by=42]
中的错误(Data_train ,,[.data.table
(Sales_6_weeks,sum(Sales)), :&#39; by&#39;中的项目。或者&#39; keyby&#39;列表是长度(1)。每个人都必须 与x中的行或i返回的行数(1017209)的长度相同。
我该怎么办? 提前谢谢
答案 0 :(得分:1)
要回答您提出的问题,您可以
Data_train[, Sales_6_weeks := sum(Sales), by = as.numeric(Date - min(Date)) %/% 42]
但看起来你可能想要这样做
Data_train[, Sales_6_weeks := sum(Sales), by = lubridate::week(Date) %/% 6]