我有一个data.table,我有几个列与项目的数量,日期等。然而,我想分组一些款项的期限为2周或6个月。我已按星期、一个月及季申请分组如下:
total.national.sales.by.category <- table[, sum(total_price),
by= .(week(local_created_day),category)]其中,local_created_Day是date列,而total_price只是一个数值列。
但是,我想将表按2周或6个月的时间分组,但是在data.table中没有内置的函数来完成它(例如。在data.table中,将季度(Local_created_Day)放在“by”语句中,并将其分组为3个月或按“week()”分组,并按周分组)。
local_created_Day列格式类似于'2019-08-07‘作为日期对象。
发布于 2019-09-17 17:22:34
如果是Date类,一个选项是使用cut创建每周分组。根据?cut.Date
断点--一个割点或数字的向量,给出x要切成的间隔数或区间规格,例如"sec“、"min”、"hour“、"day”、"DSTday“、"week”、“月份”、“四分之一”或“年份”,可以选择在前面加上整数和空格,或者后面跟着"s“。(对于“日期”对象,只允许使用“日”、“周”、“月”、“季度”和“年份”的间隔规格。
library(data.table)
table[, .(PriceSum = sum(total_price)), by= .(weekgrp = cut(local_created_day,
breaks = "2 week"),category)]使用可复制的示例
set.seed(24)
dt <- data.table(local_created_day = Sys.Date() + 1:48,
category = sample(LETTERS[1:4], 48, replace = TRUE),
total_price = rnorm(48))
dt[, .(PriceSum = sum(total_price)), by= .(weekgrp = cut(local_created_day,
breaks = "2 week"),category)]https://stackoverflow.com/questions/57979165
复制相似问题