我有一个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”作为日期对象。
答案 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)]