我正在使用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
答案 0 :(得分:3)
您可以通过以下方式将GDPMC1
的存储模式更改为"double"
storage.mode(GDPMC1) <- "double"
但这不会解决您的问题,因为问题不是整数算术。问题是xts / zoo在执行任何 Ops
方法(算术,逻辑运算等)之前按索引对齐对象,因此您的growthRate
函数将无法在xts上正常工作/ zoo objects。
您可以使用quantmod的Delt
函数,而不是编写自己的函数。
realGDPGrowthRate <- Delt(GDPMC1)