使用日期结构略有不同的 xts
Using xts with slightly different date structures
我正致力于在 R 中实现财务模型。我正在使用 quantmod::getSymbols()
,它返回一个 xts 对象。我同时使用来自 google(或 yahoo)的股票数据和来自 FRED 的 economic/yield 数据。现在我在尝试进行比较时收到不一致数组的错误。
require(quantmod)
fiveYearsAgo = Sys.Date() - (365 * 5)
bondIndex <- getSymbols("LQD",src="google",from = fiveYearsAgo, auto.assign = FALSE)[,c(0,4)]
bondIndex$score <- 0
bondIndex$low <- runMin(bondIndex,365)
bondIndex$high <- runMax(bondIndex,365)
bondIndex$score <- ifelse(bondIndex > (bondIndex$low * 1.006), bondIndex$score + 1, bondIndex$score)
# Error in `>.default`(bondIndex, (bondIndex$low * 1.006)) :
# non-conformable arrays
bondIndex$score <- ifelse(bondIndex < (bondIndex$high * .994), bondIndex$score - 1, bondIndex$score)
# Error in `<.default`(bondIndex, (bondIndex$high * 0.994)) :
# non-conformable arrays
print (bondIndex$score)
我在违规行之前添加了以下内容:
print (length(bondIndex))
print (length(bondIndex$low))
print (length(bondIndex$high))
我的结果是 5024、1256 和 1256。我希望它们的长度相同,每天都有收盘价、52 周高点和 52 周低点。我还想添加更多数据,以便这些天也有 50 天移动平均线。更进一步,真正阻碍我进步的是实施来自 FRED 的产量数据。我的理论是股票和债券市场有不同的假期,导致天数略有不同。在这种情况下,我想 na.spline()
丢失的数据。
我知道我正在走这条错误的路,做我正在尝试的事情的最佳方法是什么?我想让每一行都是一天,然后有收盘价、高价、低价、移动平均线、当天的一些不同收益率的列,最后是 "score" 具有基于其他数据的日值那天。
感谢您的帮助,如果您想要或需要更多信息,请告诉我。
你需要告诉你的声明你想要什么变量。现在你问的是 bondIndex
是大于还是小于 low 或 high。这没有意义。大概你想要 bondIndex[,1]
又名 bondIndex$LQD.Close
:
bondIndex$score <- ifelse(bondIndex[,1] > (bondIndex$low * 1.006), bondIndex$score + 1, bondIndex$score)
bondIndex$score <- ifelse(bondIndex[,1] < (bondIndex$high * .994), bondIndex$score - 1, bondIndex$score)
附带说明一下,Sys.Date() - (365 * 5)
不是五年前(提示,闰年)。这将是一个可能会咬你的错误。
我正致力于在 R 中实现财务模型。我正在使用 quantmod::getSymbols()
,它返回一个 xts 对象。我同时使用来自 google(或 yahoo)的股票数据和来自 FRED 的 economic/yield 数据。现在我在尝试进行比较时收到不一致数组的错误。
require(quantmod)
fiveYearsAgo = Sys.Date() - (365 * 5)
bondIndex <- getSymbols("LQD",src="google",from = fiveYearsAgo, auto.assign = FALSE)[,c(0,4)]
bondIndex$score <- 0
bondIndex$low <- runMin(bondIndex,365)
bondIndex$high <- runMax(bondIndex,365)
bondIndex$score <- ifelse(bondIndex > (bondIndex$low * 1.006), bondIndex$score + 1, bondIndex$score)
# Error in `>.default`(bondIndex, (bondIndex$low * 1.006)) :
# non-conformable arrays
bondIndex$score <- ifelse(bondIndex < (bondIndex$high * .994), bondIndex$score - 1, bondIndex$score)
# Error in `<.default`(bondIndex, (bondIndex$high * 0.994)) :
# non-conformable arrays
print (bondIndex$score)
我在违规行之前添加了以下内容:
print (length(bondIndex))
print (length(bondIndex$low))
print (length(bondIndex$high))
我的结果是 5024、1256 和 1256。我希望它们的长度相同,每天都有收盘价、52 周高点和 52 周低点。我还想添加更多数据,以便这些天也有 50 天移动平均线。更进一步,真正阻碍我进步的是实施来自 FRED 的产量数据。我的理论是股票和债券市场有不同的假期,导致天数略有不同。在这种情况下,我想 na.spline()
丢失的数据。
我知道我正在走这条错误的路,做我正在尝试的事情的最佳方法是什么?我想让每一行都是一天,然后有收盘价、高价、低价、移动平均线、当天的一些不同收益率的列,最后是 "score" 具有基于其他数据的日值那天。
感谢您的帮助,如果您想要或需要更多信息,请告诉我。
你需要告诉你的声明你想要什么变量。现在你问的是 bondIndex
是大于还是小于 low 或 high。这没有意义。大概你想要 bondIndex[,1]
又名 bondIndex$LQD.Close
:
bondIndex$score <- ifelse(bondIndex[,1] > (bondIndex$low * 1.006), bondIndex$score + 1, bondIndex$score)
bondIndex$score <- ifelse(bondIndex[,1] < (bondIndex$high * .994), bondIndex$score - 1, bondIndex$score)
附带说明一下,Sys.Date() - (365 * 5)
不是五年前(提示,闰年)。这将是一个可能会咬你的错误。