【问题标题】:Timeseries data object for 1 month R1 个月的时间序列数据对象 R
【发布时间】:2014-12-25 17:12:21
【问题描述】:

我有 10 月份的 20 天数据。这些数据来自不同的部门,但具有相同的列。 有 46 个变量(列),如下所示:

 Date X24K.Equivalent.Plan X24K.Equivalent.Act Plan.Rep.WS Act.Rep.WS Rep.WS.Var Plan.Rep.Intakes
1 2014-10-18                 29.0                28.8        2463       2447        -16              568
2 2014-10-19                 29.6                31.0        2513       2633        120              461
3 2014-10-20                 33.8                35.4        2869       3013        144             1159
4 2014-10-21                 36.6                35.9        3115       3054        -61             1146
5 2014-10-22                 35.3                34.7        2999       2953        -46             1126
6 2014-10-23                 31.9                33.4        2714       2842        128             1124

请注意,我只显示 7 列。

我想将此月度数据转换为时间序列对象,以便我可以进行一些时间序列分析等。 我遇到的问题是:

1- 相同的数据来自其他 4 个业务部门,我必须创建 4 个时间序列对象吗?如果是,那么如何在同一时间序列图上绘制性能变化/差异?

2- 我不能绘制超过 10 个变量:/

我尝试了以下方法:

#convert date column into date format and add id
library(lubridate)
bvg1$Date = dmy(bvg1$Date)

> bvg1
        Date X24K.Equivalent.Plan X24K.Equivalent.Act Plan.Rep.WS Act.Rep.WS Rep.WS.Var Plan.Rep.Intakes
1 2014-10-18                 29.0                28.8        2463       2447        -16              568
2 2014-10-19                 29.6                31.0        2513       2633        120              461
3 2014-10-20                 33.8                35.4        2869       3013        144             1159
4 2014-10-21                 36.6                35.9        3115       3054        -61             1146
5 2014-10-22                 35.3                34.7        2999       2953        -46             1126
6 2014-10-23                 31.9                33.4        2714       2842        128             1124
7 2014-10-24                 29.0                31.9        2468       2714        246             1106

如果我将其转换为时间序列:

ts_bvg1 = ts(bvg1_withoutID)

它显示了一个奇怪的日期:

Date X24K.Equivalent.Plan X24K.Equivalent.Act Plan.Rep.WS Act.Rep.WS Rep.WS.Var Plan.Rep.Intakes
1 1413590400                 29.0                28.8        2463       2447        -16              568
2 1413676800                 29.6                31.0        2513       2633        120              461
3 1413763200                 33.8                35.4        2869       3013        144             1159
4 1413849600                 36.6                35.9        3115       3054        -61             1146
5 1413936000                 35.3                34.7        2999       2953        -46             1126
6 1414022400                 31.9                33.4        2714       2842        128             1124
7 1414108800                 29.0                31.9        2468       2714        246             1106

如果我执行以下操作:

ts_bvg1 = ts(bvg1_withoutID, start=2014)

仍然以那种奇怪的格式显示日期,但添加了 2014 - 2020 等年份。

> ts_bvg1
Time Series:
Start = 2014 
End = 2020 
Frequency = 1 
           Date X24K.Equivalent.Plan X24K.Equivalent.Act Plan.Rep.WS Act.Rep.WS Rep.WS.Var Plan.Rep.Intakes
2014 1413590400                 29.0                28.8        2463       2447        -16              568
2015 1413676800                 29.6                31.0        2513       2633        120              461
2016 1413763200                 33.8                35.4        2869       3013        144             1159
2017 1413849600                 36.6                35.9        3115       3054        -61             1146
2018 1413936000                 35.3                34.7        2999       2953        -46             1126
2019 1414022400                 31.9                33.4        2714       2842        128             1124
2020 1414108800                 29.0                31.9        2468       2714        246             1106

如何强制它将观察结果视为每天而不是每月或每年?

谢谢

【问题讨论】:

  • 感谢您展示数据形状。如果我们有可重复的例子真的很棒,这些数据是公开的吗?顺便说一句,你奇怪的日期可能是自 Unix 时代以来的几秒钟
  • 您好,感谢您的评论。不,此数据集是我组织内部的,抱歉,我无法与外界共享。知道如何解决我的问题。对于奇怪的日期格式,您可能是对的。
  • 我明白,这是很常见的问题(机密数据)。这很痛苦,但如果您希望人们能够在这里为您提供帮助,官方推荐的方法是使用公共数据重现您的错误,然后让我们帮助您使用公共数据。顺便说一句,我能够成功转换这些时间戳。复制其中一个奇怪的日期并将其粘贴到此处epochconverter.com

标签: r time-series


【解决方案1】:

我已经通过使用zoo 包解决了这个问题。

我做了以下事情:

library(zoo)
ts_bvg1 = zoo(bvg1, order.by=bvg1$Date)

> ts_bvg1
           Date       X24K.Equivalent.Plan X24K.Equivalent.Act Plan.Rep.WS Act.Rep.WS Rep.WS.Var Plan.Rep.Intakes
2014-10-18 2014-10-18 29.0                 28.8                2463        2447       -16         568            
2014-10-19 2014-10-19 29.6                 31.0                2513        2633       120         461            
2014-10-20 2014-10-20 33.8                 35.4                2869        3013       144        1159            
2014-10-21 2014-10-21 36.6                 35.9                3115        3054       -61        1146            
2014-10-22 2014-10-22 35.3                 34.7                2999        2953       -46        1126            
2014-10-23 2014-10-23 31.9                 33.4                2714        2842       128        1124            
2014-10-24 2014-10-24 29.0                 31.9                2468        2714       246        1106            

现在的问题是将这些数据绘制为时间序列。 这就是我所做的:

> plot(ts_bvg1$X24K.Equivalent.Plan, col="red")
Error in plot.window(...) : invalid 'ylim' value

我尝试了不同的列并得到相同的错误。

如果我打印ts_bvg1$X24K.Equivalent.Plan,它就是这样的:

> ts_bvg1$X24K.Equivalent.Plan
2014-10-18 2014-10-19 2014-10-20 2014-10-21 2014-10-22 2014-10-23 2014-10-24 
      29.0       29.6       33.8       36.6       35.3       31.9       29.0 

现在知道如何绘制了吗?或将其与其他参数一起绘制在同一张图上???

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 2020-09-16
    • 1970-01-01
    相关资源
    最近更新 更多