我想抽出一些股票市场的时间来适应树模型。例如,这些代码用于加载日经市场数据:
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
时,时间列被替换为不是时间的某个数字。我怎样才能抽出时间?
答案 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