data.table组的2周或6个月

时间:2019-09-17 17:19:31

标签: r data.table

我有一个data.table,其中有几列,其中包含项目数,日期等。但是,我希望将一些总和分为2周或6个月。我已经按周,1个月和季度应用了分组,如下所示:

total.national.sales.by.category <- table[, sum(total_price), 
                                          by= .(week(local_created_day),category)]

其中local_created_Day是日期列,而total_price只是一个数值列。

但是,我想按2周或6个月的时间对表进行分组,但是data.table中没有内置函数可以执行此操作(例如,在data.table中,您将Quarter(local_created_Day)放在了'by'语句,并按3个月或'week()'进行分组,并按周进行分组)。

local_created_Day列格式类似于“ 2019-08-07”作为日期对象。

1 个答案:

答案 0 :(得分:2)

如果是Date类,则一种选择是使用cut创建每周分组。根据{{​​1}}

  

breaks-割点或割点的矢量,给出要割入的x的间隔数或间隔规格,“ sec”,“ min”,“ hour”,“ day”,“ DSTday”之一,“星期”,“月”,“季度”或“年”,可以选择在其后跟一个整数和一个空格,或后跟“ s”。 (对于“日期”对象,只允许使用“天”,“周”,“月”,“季度”和“年”的时间间隔指定。

?cut.Date

使用可复制的示例

library(data.table)
table[, .(PriceSum = sum(total_price)), by= .(weekgrp = cut(local_created_day,
                   breaks = "2 week"),category)]