如何正确调用/子集xts对象中的特定列?

问题描述 投票:0回答:2

我通过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结构。万分感谢!

r subset xts
2个回答
0
投票

运行getSymbols后,数据出现在GOOGL中,而不是data。尝试

GOOGL[, "GOOGL.Open"]
GOOGL[, 3]

0
投票

对象是在环境中创建的。我们可以检查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
© www.soinside.com 2019 - 2024. All rights reserved.