我通过quantmod导入了一些时间序列数据,并且相应的xts对象包含多个不同的列,而不仅仅是一个随时间变化的价格(开仓价等)。我只需要使用其中之一进行进一步分析,如何正确调用/子集中xts对象中的特定列?getSymbols每天为我提供一些价格信息,我不需要全部/想要。
library(quantmod)
data <- getSymbols("GOOGL",src = "yahoo", from = "2000-01-01", to = "2015-01-01")
data <- data[ ,"GOOGL.Open"] #trying to subset like this
data <- data[ , 3] #or this
Nothin还没有工作。必须有一些简单的解决方案。当然,我想保留xts结构。万分感谢!
运行getSymbols
后,数据出现在GOOGL
中,而不是data
。尝试
GOOGL[, "GOOGL.Open"]
GOOGL[, 3]
对象是在环境中创建的。我们可以检查ls()
ls()
#[1] "data" "GOOGL"
如果我们检查data
,那将只是字符串
data
#[1] "GOOGL"
这就是它不起作用的原因
对象名称将与getSymbols
中使用的符号名称相同。因此,使用
GOOGL[, "GOOGL.Open"]
或者我们可以用get
值
get(data)[, "GOOGL.Open"]
或者如果我们需要直接分配并想要更多控制,请使用。选项auto.assign = FALSE
,因为默认情况下是TRUE
data <- getSymbols("GOOGL",src = "yahoo", from = "2000-01-01",
to = "2015-01-01", auto.assign = FALSE)
head(data[, "GOOGL.Open"])
# GOOGL.Open
#2004-08-19 50.05005
#2004-08-20 50.55556
#2004-08-23 55.43043
#2004-08-24 55.67567
#2004-08-25 52.53253
#2004-08-26 52.52753