为什么当我从动物园转换为ts时,我得到一个十进制索引?

时间:2016-03-03 23:29:25

标签: r time-series zoo

在这种情况下,我将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崩溃(?)调用 - 有一些原因,但主要原因是我想要最小化对Quandl的调用次数。因此,我需要以日常形式提取数据 - 这意味着它必须在动物园中出现,但我需要在用户端崩溃后输出ts。 - 我正在为这门课程写一个闪亮的应用程序,这个索引malarky正在推动我的墙。

谢谢!

1 个答案:

答案 0 :(得分:0)

尝试使用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> 

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