用于强制xts对象的数据属性加倍的惯用法

时间:2014-05-01 12:23:13

标签: r xts zoo

我正在使用getSymbols从FRED下载数据。这将创建一个xts类对象,其数据属性设置为类型为整数的系列'我正在下载。我希望这些数据是类型/类double。 这样做的惯用方法是什么?

  getSymbols("GDPMC1", src = 'FRED', auto.assign = TRUE)
  growthRate <-
      function (x) {
      stopifnot(length(x) > 1)
      (x[2:length(x)] - x[-length(x)] )/ x[-length(x)]
    }
 stopifnot(growthRate(c(2,3,4)) == c(0.5 , 1/3 ))
 realGDPGrowthRate <- growthRate(GDPMC1) ### zeros due to integer math

1 个答案:

答案 0 :(得分:3)

您可以通过以下方式将GDPMC1的存储模式更改为"double"

storage.mode(GDPMC1) <- "double"

但这不会解决您的问题,因为问题不是整数算术。问题是xts / zoo在执行任何 Ops方法(算术,逻辑运算等)之前按索引对齐对象,因此您的growthRate函数将无法在xts上正常工作/ zoo objects。

您可以使用quantmod的Delt函数,而不是编写自己的函数。

realGDPGrowthRate <- Delt(GDPMC1)