代码之家  ›  专栏  ›  技术社区  ›  Stefano Potter

从每周数据创建ts对象

  •  2
  • Stefano Potter  · 技术社区  · 7 年前

    我有一个数据帧,看起来像这样:

                Value
    2002-09-01  0.4
    2002-09-08  0.2
    ...............
    2017-10-08  0.6
    2017-10-15  0.5
    

    数据框中仅表示9月和10月,10月仅包括10月1日至15日,因此从2002年到2017年的每年都有一个半月的数据。

    我现在需要将这些值转换为 ts 对象。

    我试图这样做:

    t = ts(df$Value, frequency = 7, start = as.Date('2002-09-01'), end = as.Date('2017-10-15')
    

    invalid time series parameters specified

    是不是因为十月只有15天?

    2 回复  |  直到 7 年前
        1
  •  1
  •   G. Grothendieck    7 年前

    假设我们有

    tt <- c(seq(as.Date("2002-09-01"), length = 7, by = 7), 
            seq(as.Date("2003-09-01"), length = 7, by = 7))
    x <- 1:14
    

    然后我们可以把它表示为动物园系列:

    library(zoo)
    z <- zoo(x, tt)
    

    这里的日期不是固定间隔的,但是如果你不得不强制它成为固定间隔的ts序列,那么假设每年有7个点,一种方法是:

    xser <- ts(setNames(x, tt), start = 2002, freq = 7)
    

    这将用y,y+1/7,…,y+6/7的时间来表示y年的7个点。我们使用日期作为名称,这样您仍然可以将每个点与其日期联系起来。

        2
  •  1
  •   strawberryBeef    7 年前

    是的,大多数时间序列库都要求在给定的时间段内对数据进行均匀采样。

    Cross Validated post 一些想法和图书馆 imputeTS