首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >data.table组2周或6个月

问data.table组2周或6个月
EN

Stack Overflow用户
提问于 2019-09-17 17:19:31
回答 1查看 243关注 0票数 2

我有一个data.table,我有几个列与项目的数量,日期等。然而,我想分组一些款项的期限为2周或6个月。我已按星期、一个月及季申请分组如下:

代码语言:javascript
复制
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‘作为日期对象。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-17 17:22:34

如果是Date类,一个选项是使用cut创建每周分组。根据?cut.Date

断点--一个割点或数字的向量,给出x要切成的间隔数或区间规格,例如"sec“、"min”、"hour“、"day”、"DSTday“、"week”、“月份”、“四分之一”或“年份”,可以选择在前面加上整数和空格,或者后面跟着"s“。(对于“日期”对象,只允许使用“日”、“周”、“月”、“季度”和“年份”的间隔规格。

代码语言:javascript
复制
library(data.table)
table[, .(PriceSum = sum(total_price)), by= .(weekgrp = cut(local_created_day,
                   breaks = "2 week"),category)]

使用可复制的示例

代码语言:javascript
复制
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)]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57979165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档