时间序列作为 data.table 中的“ts”列?

2024-01-04

我有多组时间序列数据,希望帮助找出将它们放入 R 并使用 R 进行分析的最佳方法。我对 data.table 非常熟悉,但对 R 不太熟悉ts支持时间序列分析的类。

我特别想知道如何使用ts http://stat.ethz.ch/R-manual/R-patched/library/stats/html/ts.html在这个情况下或者如果有限制ts(例如聚合一组问题ts对象),使其适合在这里使用。

The Data

有大量的商店。对于每个商店,我每天都有多个数据点,例如以美元计的销售额、以交易数计的销售额以及商店流量(进入商店的人数)。 (实际上我拥有的是一个表,其中包含存储 ID、日期以及该存储和日期的数据列。)

我一直在做的是使用每个商店一行的 data.table,将商店的数据聚合到几个月中,并将每个月的值存储在单独的命名列中(例如 jan14_dollars、feb14_dollars...),但这很笨拙出于很多原因,特别是当我想查看几周或几个季度时。

我认为处理这个问题的正确方法是使用类型列ts所以每一行就是store, dollars_ts, transactions_ts, traffic_ts但是(a)如何将数据转换为该格式以及(b)可以ts像整数一样组合才能得到我想要的结果?如果您只能回答(a)或(b),但不能同时回答(a)或(b),请尽量回答。

我无法提供真实的数据集,但您可以生成一个随机数据集来使用,如下所示:

require("data.table")

storeData <- CJ(store = toupper(letters), date = seq(as.Date('2012-01-01'), as.Date('2014-01-01'), by="day"))
storeData$dollars = sample(100:100000, nrow(storeData), replace = TRUE)/100
storeData$transactions <- sample(0:1000, nrow(storeData), replace = TRUE)
storeData$traffic  <- storeData$transactions + sample(0:1000, nrow(storeData), replace = TRUE)

head(storeData)
   store       date  dollars transactions traffic
1:     A 2012-01-01   48.60          409     990
2:     A 2012-01-02  996.89           36     428
3:     A 2012-01-03   69.35          647    1103
4:     A 2012-01-04  334.56          953     973
5:     A 2012-01-05  692.99          958    1753
6:     A 2012-01-06  973.32          724    1086

分析

我想回答诸如“有多少商店的销售额实现正增长?”之类的问题。以及“美元/交易的变化与流量的变化之间是否存在关系?”并将数据按时间段分类并比较不同时间段的答案(例如今年第一季度与去年第一季度)。

可以用以下方式回答此类问题吗ts http://stat.ethz.ch/R-manual/R-patched/library/stats/html/ts.html?如果是这样,我如何将此数据放入适当的列集中,或者是否有其他结构data.table我应该用?

请展示如何组织数据,以及如何使用数据回答示例问题“与 2013 年 1 月相比,2014 年 1 月有多少商店的美元销售额出现正增长?”以及“过去 3 个月每笔交易的美元总体趋势如何?”


你在这里问了很多问题。我建议您花时间阅读 data.table 可以做的所有事情,包括连接和聚合数据。以下是如何获得第一季度每家商店同比增长的示例。

#get the first day of the first month for your binning
minDate<-min(storeData$date); month(minDate)<-1; day(minDate)<-1

#get the first day of the last month for your binning
maxDate<-max(storeData$date); month(maxDate)<-12; day(maxDate)<-1

#Build some bins
yearly<-data.table(leftBound=seq.Date(minDate,maxDate,by="year"))
quarterly<-data.table(leftBound=seq.Date(minDate,maxDate,by="3 months"))
monthly<-data.table(leftBound=seq.Date(minDate,maxDate,by="month"))

#Example for quarterly data
quarterly[, rollDate:=leftBound]
storeData[, rollDate:=date]

setkey(quarterly,"rollDate")
setkey(storeData,"rollDate")

temp<-quarterly[storeData, roll=TRUE] #associate each (store, date) pair with a quarter

#create a "join table" containing each quarter for each store
jt<-CJ(leftBound=quarterly$leftBound, store=unique(storeData$store))
setkey(temp,"leftBound","store")

dt<-temp[jt, allow.cartesian=TRUE]
dt[, `:=`(year=year(leftBound), quarter=quarter(leftBound))]

qSummary<-dt[,list(dollars=sum(dollars, na.rm=TRUE), 
         transactions=sum(transactions, na.rm=TRUE), 
         traffic=sum(traffic, na.rm=TRUE)),
   by=list(year,quarter,store)] #Summarize the data by quarter

#Get year/year growth for Q1
qSummary[,list(dollarGrowth = dollars[which(year==2014 & quarter==1)] / dollars[which(year==2013 & quarter==1)]), by=store]

 #First five rows...
    store dollarGrowth
 1:     A    0.0134860
 2:     B    0.0137215
 3:     C    0.0188249
 4:     D    0.0163887
 5:     E    0.0037576
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

时间序列作为 data.table 中的“ts”列? 的相关文章

随机推荐

  • 在 python 中搜索字符串匹配后如何从列表中获取下一个元素

    嗨 朋友们 我有一个列表 我正在其中搜索字符串 并且随着搜索的字符串我想获取列表项的下一个元素 下面是示例代码 gt gt gt contents apple fruit vegi leafy gt gt gt info data for
  • 在 xtext 语法中定义原语

    我想使用 xtext 创建一个极其简单的 DSL 具有以下功能 它将有两种基本类型 数字和字符串 用户可以定义自己的类 类由字段声明组成 字段声明将名称与类型相关联 其中类型可以是类或基元 以下是我对 DSL 的尝试 类定义和引用工作正常
  • UWP 应用程序在启动时自动启动

    一切都在标题中 我目前正在寻找一种方法来启动我的UWP app 自动地仅使用 UWP 框架启动 Windows 时 计算机上没有文件操作 该应用程序必须能够在应用商店中共享并在 Windows 启动时打开 这是一件可行的事情吗 如果是这样怎
  • 组织导入 Eclipse 方法

    I need to know which method is called inside eclipse when I press CTRL SHIFT O Organise Imports in order to invoke it af
  • 使用 azurerm 配置 Terraform 子网时出错

    最近我发现我的 AKS 集群拥有一个太小的子网 因此 我尝试添加第二个子网和节点池 现在可以通过 Azure CNI 实现 然后创建一个适当的子网并将其迁移回来 During terraform plan有效响应一切顺利 但是在应用时会抛出
  • Git 在制表符和空格之间进行转换,但只是有时

    首先 我是 git 的新手 就像 如果缓存在暂存区域中命中我 我几乎无法区分缓存和索引 或类似的东西 排除了这一点 我的问题是这样的 假设我想要处理一个编码风格要求缩进空格的项目 但我喜欢制表符 似乎我可以使用清洁和涂抹功能 但有一个问题
  • 在 JS 中新建一行

    你好 我有这个 JS 代码 function myFunction var g var d new Date getDay switch d case 0 g Today it s Sunday break case 1 g Today i
  • 如何发送 FastAPI 响应而不将用户重定向到另一个页面?

    我正在使用 FastAPI 创建一个 API 它接收form data从 HTML 页面处理数据 需要一些时间 并返回一条消息 说明此任务已完成 这是我的后端 from cgi import test from fastapi import
  • 安装 geopandas 的问题

    我正在尝试在我的笔记本电脑 Windows 10 版本 1709 机器 上安装 geopandas 执行 pip install geopandas 命令后 我收到以下消息 command python setup py egg info
  • 为什么jsp改变时tomcat不需要重启

    我一直在使用JSP Servlet很长一段时间 我知道每当我们改变任何东西Servlet我们需要重新启动 Tomcat 服务器才能获取更改 如果 JSP 发生更改 tomcat 不需要重新启动 据我所知JSP页面被转换成Servlet仅当编
  • 如何检测浏览器中的链接复制情况?

    昨天我和一个出租车司机聊天 当他提到我是一名程序员时 他告诉我 几天前他经历了以下情况 在尝试从浏览器地址栏中复制 URL 时 出现一个消息框带有类似的消息 请不要复制此链接 而是注册 我不是网络开发人员 所以这可能是一个蹩脚的问题 但我想
  • Jenkins 插件中的变量替换

    我正在开发一个新的 Jenkins 插件 该插件将在 Jenkins 作业的构建阶段执行 并且要求允许用户在插件的作业配置中指定变量名称 而不是文字值 目的是 当作业执行时 用户指定的变量名称将被替换为与该变量关联的实际值 并且插件将在运行
  • ASP.NET MVC - 动态样式表

    我想让用户选择网站的背景颜色并将所选颜色保存在数据库中 当用户登录时 后台将显示正确的颜色 基于以下website http www codeproject com KB aspnet CSSVariables aspx 我可以在范围内设置
  • 如何有条件地为张量赋值[屏蔽损失函数]?

    我想创建一个 L2 损失函数 忽略标签值为 0 的值 gt 像素 张量batch 1 包含标签 同时output是净输出的张量 两者的形状均为 None 300 300 1 labels mask tf identity batch 1 l
  • laravel phpexcel 更新中不明确的类解析

    我尝试使用 php excel 更新 laravel 同时安装我在作曲家中发现了以下警告 Error Warning Ambiguous class resolution SettingsController was found in bo
  • 可移植地处理 C++ 中的异常错误

    我正在致力于将 Visual C 应用程序移植到 GCC 应该在 MingW 和 Linux 上构建 现有代码使用 try except 1 在几个地方阻塞 这样几乎没有什么 除了内存不足类型错误 会让程序退出而不做一些最小的日志记录 使用
  • Git merge - 三路“git merge”

    I am trying to simulate the example on three way merge process in git given here https git scm com book en v2 Git Branch
  • Psr7 Http Message,为什么不可变?

    我正在看PSR 7 https github com php fig http message tree master src接口并思考如何实现它们 我也一直在读这篇博文 http evertpot com psr 7 issues 显然
  • Vue.js:v-for完成后的事件

    我正在尝试使用 Vue js 构建一个简单的聊天应用程序 我的问题是 当写入新消息时 消息区域需要滚动到底部 我使用 v for 指令循环遍历消息 v for 更新 DOM 时是否有事件 我已经做到了 以便消息区域 div 监听组件的消息数
  • 时间序列作为 data.table 中的“ts”列?

    我有多组时间序列数据 希望帮助找出将它们放入 R 并使用 R 进行分析的最佳方法 我对 data table 非常熟悉 但对 R 不太熟悉ts支持时间序列分析的类 我特别想知道如何使用ts http stat ethz ch R manua