【发布时间】:2018-02-22 21:45:08
【问题描述】:
我有一个数据表:
> 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 天
的sales 总和
> Data_train[,Sales_6_weeks:=sum(Sales),by=42]
但它给了我一个错误:
[.data.table(Data_train, ,:=(Sales_6_weeks, sum(Sales)) 中的错误, : 'by' 或 'keyby' 列表中的项目是长度 (1)。每个必须 长度与 x 中的行数或 i (1017209) 返回的行数相同。
请问我该怎么办? 提前谢谢你
【问题讨论】:
-
你可以输入你的数据样本吗?
-
您实际上是在尝试按单个值
c(42)进行分组 - 它试图通过长度为1的分组向量对1017209行进行分组。错误正是告诉你这一点。您需要以某种方式制作一个计数器,将您的行分成 42 天的块。以cut-cut(Sys.Date()+0:9, breaks="2 days")为例。
标签: r