每次尝试将不同来源的时间序列数据组合时,我都没有找到有效的解决方法。所谓不同来源,是指将来自互联网(例如雅虎股票价格)和本地csv时间序列等数据源进行组合。
yahoo.xts # variable containing security prices from yahoo
local.xts # local time series data
cbind(yahoo.xts,local.xts) # combine them
结果如下:
我得到了一个组合的xts数据框,其中包含给定日期的不同时间。我想要忽略给定日期的时间并对齐它们。我解决这个问题的方法是提取两个不同数据源的索引,并使用as.Date
函数进行转换,然后将它们重新封装为xts对象。我的问题是是否有其他更好、更有效的方法我错过了。注意:我不确定如何提供一个良好的本地数据源示例,以便为您提供一个很好的复制问题的方法,但以下是从在线获取数据的代码片段。
require(quantmod)
data.etf = env()
getSymbols.av(c('XOM','AAPL'), src="av", api.key="your-own-key",from = '1970-01-01',adjusted=TRUE,
output.size="full",env = data.etf, set.symbolnames = T, auto.assign = T)
yahoo.xts = Cl(data.etf$XOM)
这里是一些数据:
Yahoo:
structure(c(112.68, 109.2, 107.86, 104.35, 104.68, 110.66), class = c("xts",
"zoo"), .indexCLASS = c("POSIXct", "POSIXt"), tclass = c("POSIXct",
"POSIXt"), .indexTZ = "America/Chicago", tzone = "America/Chicago", index = structure(c(1508457600,
1508716800, 1508803200, 1508889600, 1508976000, 1509062400), tzone = "America/Chicago", tclass = c("POSIXct",
"POSIXt")), .Dim = c(6L, 1L), .Dimnames = list(NULL, "XIV"))
本地结构:
structure(c(0.176601541324807, -0.914132074513824, -0.0608652702022332,
-0.196679777210441, -0.190397155984135, 0.915313388202916, -0.0530280808936784,
0.263895885521142, 0.10844973759151, 0.0547864992300319, 0.0435149080877898,
-0.202388932508539, 0.0382888645282672, -0.00800908217028123,
-0.0798424223984417, 0.00268898461896916, 0.00493307845560457,
0.132697099147406, 0.074267173330532, -0.336299384720176, -0.0859815663679892,
-0.0597168456705514, -0.0867777000321366, 0.283394650847026,
-0.0100414455118704, 0.106355723615723, -0.0640682814821423,
0.0481841070155836, -0.00321273561708742, -0.13182105331959), .indexCLASS = c("POSIXct",
"POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = structure("America/Chicago", .Names = "TZ"), tzone = structure("America/Chicago", .Names = "TZ"), class = c("xts",
"zoo"), na.action = structure(1L, class = "omit", index = 1080540000), index = structure(c(1508475600,
1508734800, 1508821200, 1508907600, 1508994000, 1509080400), tzone = structure("America/Chicago", .Names = "TZ"), tclass = c("POSIXct",
"POSIXt")), .Dim = c(6L, 5L), .Dimnames = list(NULL, c("D.30",
"D.60", "D.90", "D.120", "D.150")))
dput()
еҮҪж•°гҖӮеӣ жӯӨпјҢеңЁжӮЁзҡ„зӨәдҫӢдёӯпјҢжӮЁеҸҜд»Ҙзј–иҫ‘жӮЁзҡ„её–еӯҗпјҢеҢ…жӢ¬dput(head(yahoo.xts))
е’Ңdput(head(local.xts))
зҡ„иҫ“еҮәз»“жһңгҖӮиҜ·жіЁж„ҸпјҢзҝ»иҜ‘з»“жһңе·Іе°ҪеҠӣдҪҝеҶ…е®№йҖҡдҝ—жҳ“жҮӮпјҢдҪҶеҸҜиғҪдёҚе®Ңе…ЁеҮҶзЎ®жҲ–жҒ°еҪ“гҖӮ - duckmayr