【问题标题】:Why when I convert from zoo to ts do I get a decimal index?为什么当我从 zoo 转换为 ts 时会得到十进制索引?
【发布时间】:2025-12-27 09:25:06
【问题描述】:

情况是这样,我从 Quandl 中提取一个数据集作为动物园对象。然后使用应用。函数我在将其移动到 ts 对象之前对其进行转换。 当我从 zoo 转换为 ts 时,我得到一个十进制值索引。有什么办法可以让索引回到“Y-m-d”?

  • 示例代码:

    data <- Quandl("YAHOO/AAPL", trim_start="01-01-2000", trim_end="01-01-2010", type="zoo")
    data <- data[,4]
    data <- apply.weekly(data, mean)
    data <- ts(data, frequency=52, class="ts", 
                     start=c(year(start(data)),week(start(data))))
    
    • 然后我使用:

         head(index(data))
      
    • 我得到的是:

         [1] 2000.019 2000.038 2000.058 2000.077 2000.096 2000.115
      
    • 我想要的是:

         [1] "01-08-2000" "01-15-2000" "01-22-2000" "01-29-2000"
      
    • 最后一行的出处:

         format(date_decimal(index(data)), "%m-%d-%Y")
      

所以我想我可以从这两种方式来看,

(1) ts后可以更改索引吗? (例如,从第一个索引到第二个 - 上面)我似乎找不到任何迹象表明我可以

(2) 可以防止ts设置十进制形式的索引吗?

在任何人问之前,这是针对我所在的 TS 类的项目,我不想使用 Quandl collapse(?) 调用 - 有几个原因,但主要原因是我希望尽量减少对 Quandl 的调用次数。因此,我需要以每日形式提取数据 - 这意味着它必须在动物园中下降,但我需要在用户端崩溃后将其输出到 ts 中。 - 我正在为这门课程编写一个闪亮的应用程序,这个索引问题让我陷入困境。

谢谢!

【问题讨论】:

    标签: r time-series zoo


    【解决方案1】:

    尝试使用 zooreg,这是 zoo 包提供的另一种类型,用于帮助 ts 类型:

    ‘zooreg’ is the creator for the S3 class ‘"zooreg"’ for regular
     ‘"zoo"’ series. It inherits from ‘"zoo"’ and is the analogue to
     ‘ts’.
    

    这里是快速尝试:

    R> aapl <- Quandl("YAHOO/AAPL", trim_start="01-01-2000", trim_end="01-01-2010", type="zoo")
    R> weeklyaapl <- apply.weekly(aapl[,4], mean)
    R> summary(as.zooreg(weeklyaapl))
         Index            as.zooreg(weeklyaapl)
     Min.   :2000-01-07   Min.   : 13.3        
     1st Qu.:2002-07-06   1st Qu.: 22.3        
     Median :2005-01-03   Median : 56.0        
     Mean   :2005-01-03   Mean   : 70.6        
     3rd Qu.:2007-07-04   3rd Qu.:104.7        
     Max.   :2009-12-31   Max.   :210.8        
    R> head(weeklyaapl)
    2000-01-07 2000-01-14 2000-01-21 2000-01-28 2000-02-04 2000-02-11 
       102.588     94.975    108.828    108.063    102.825    112.762 
    R> 
    

    日期索引对象仍然可以根据自己的喜好进行格式化。

    【讨论】:

    • 我认为这个技巧会奏效——我一直坚持使用需要 ts 对象的 {stats} 包中的 HoltWinters() 函数。我将把它从 {forecast} 函数传递给 hw() 函数,我相信我仍然可以把它作为一个动物园对象走这条路线。谢谢!
    • 这实际上是行不通的,看来预测包也需要 ts 对象。所以我又回到试图弄清楚如何获取具有适当格式日期索引的 ts 对象...