如何从特定日期开始创建每日时间序列

时间:2015-07-18 12:27:54

标签: r time-series

我正在尝试使用R为每日时间序列创建一个ts对象,该时间序列从2015年2月24日开始,到2015年4月13日结束。我已经为每日数据设置了频率= 7,但我找不到将确切日期作为起始参数的方法。

3 个答案:

答案 0 :(得分:8)

我认为这是你想要的,使用' lubridate'中的decimal_date()函数。获取每日序列的正确开始时间,并假设您要作为ts索引的值向量称为x并且具有适当的长度:

library(lubridate)
df <- ts(x, start = decimal_date(as.Date("2015-02-24")), frequency = 365)

如果我使用rnorm()生成适当长度的x,那么看起来是什么样的:

> df
Time Series:
Start = c(2015, 55) 
End = c(2015, 103) 
Frequency = 365 
[1]  0.4284579  1.9384426  0.1242242 -2.4002789 -0.4064669  0.6945274 -0.5172909  0.4772347  0.8758635 -1.7233406  0.5929249  1.5662611  1.0692173 -0.1354226
[15]  1.1404375  0.7714662 -0.2871663 -5.2720038 -1.7353146 -0.7053329  1.0206803  1.7170262 -0.3469172  0.2594851  2.0371700 -2.1549066 -0.6639050 -0.4912258
[29] -0.3849884 -3.0448583 -1.3317834  1.6173705  0.7176759 -0.8646802 -1.7697016  1.1114061  0.6941131 -0.1942612 -0.1836107 -0.5850649 -1.7449090 -3.3646555
[43] -0.4341833  1.9721407  1.4995265  1.7168002  1.8617295 -3.4578959  1.1639413

请注意,对于每日索引,您需要频率= 365而不是7,这表示每周索引。

如果你想要一个可以在动物园里使用的日期矢量&#39;相反,这样做:

seq(from = as.Date("2015-02-24"), to = as.Date("2015-04-13"), by = 1)

所以你要创建一个像这样的动物园对象:

zoo(x, seq(from = as.Date("2015-02-24"), to = as.Date("2015-04-13"), by = 1))

答案 1 :(得分:0)

如果您想要带有日期列的表,则可以使用:

df <- data.frame(date = seq(from = as.Date("2015-02-24"), to = as.Date("2015-04-13"), by = 1))

答案 2 :(得分:0)

使用xts库:

library(xts)
data_xts <- xts(x=dataframe$x, order.by=as.Date(dataframe$date, "%m/%d/%Y"))

使用此方法,您不必指定结束日期。

输出看起来像这样:

              [,1]
2020-01-01  7168.3
2020-01-02  7174.4
2020-01-03  6942.3
2020-01-04  7334.8