在getSymbols中提取时间

时间:2013-12-30 20:15:59

标签: r quantmod

我想抽出一些股票市场的时间来适应树模型。例如,这些代码用于加载日经市场数据:

library(quantmod)
library(zoo)
symbols=c('^N225')
getSymbols(symbols,src='yahoo', from="2003-04-28", to="2007-10-29")

之后,我想提取市场运作的时间(我们可以在写N225之后看到市场数据左栏第一列的时间)。当我们用csv格式保存这些数据时,时间列将被ID号替换。 有人说使用动物园格式,并在用这些代码保存数据之后:

N<-data.frame(N225)
Ndata<-read.zoo(N)

警告出现如下:

In zoo(rval, index(x)[i]) :
some methods for “zoo” objects do not work if the index entries in ‘order.by’ are not unique

当我们写Ndata时,时间列被替换为不是时间的某个数字。我怎样才能抽出时间?

2 个答案:

答案 0 :(得分:1)

我无法运行您的代码,但这将获得相同的信息。来自圣路易斯联邦储备银行:

library(quantmod)
library(zoo)
symbols=c('NIKKEI225')
getSymbols(symbols,src='FRED')

df <- as.data.frame(NIKKEI225)
df <- cbind(date=as.Date(rownames(df)),df)
write.csv(df,file="Ndata.csv, row.names=F)

问题是getSymbols(...)返回一个时间序列对象,其中时间是隐式的。因此,当您保存时,只需获取“时间索引”,而不是数据时间变量。上面的代码通过将它们放在数据框的一列中,并将它们明确地设置为类Date来使时间显式化。

正如@GSee在下面的评论中指出的,这是另一种更好的方式:

df <- data.frame(date=index(NIKKEI225),NIKKEI225)
write.csv(df,file="Ndata.csv, row.names=F)

答案 1 :(得分:0)

看起来getSymbols可能会给您带来麻烦。我没有雅虎的API密钥所以我不得不手动下载文件,我没有遇到任何麻烦。

library(quantmod)
symbols=c('^N225')
getSymbols(symbols,src='yahoo', from="2003-04-28", to="2007-10-29")
#this returned an error so I had to manually read in the CSV file
N225 <- read.csv("table.csv")
Ndata <- read.zoo(N225)
head(Ndata)
           Open High  Low Close Volume Adj.Close
2003-04-28 7679 7685 7604  7608  46000      7608
2003-04-30 7695 7831 7695  7831  63200      7831
2003-05-01 7804 7896 7746  7863  55800      7863
2003-05-02 7863 7907 7792  7907  53400      7907
2003-05-06 7995 8133 7995  8084  61400      8084
2003-05-07 8127 8156 8062  8110  57600      8110