如何将标题添加到xts时间序列的列

时间:2016-01-06 03:18:47

标签: r csv xts zoo quantmod

我想使用quantmod下载一些库存详情,并使用write.csv成功保存了文件:

write.csv(df,file="AAPL.csv")

问题是csv文件中没有日期标题。

           AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
2014-10-01    100.59    100.69    98.70      99.18    51491300      97.09741
2014-10-02     99.27    100.22    98.04      99.90    47757800      97.80230
2014-10-03     99.44    100.21    99.04      99.62    43469600      97.52818
2014-10-06     99.95    100.65    99.42      99.62    37051200      97.52818
2014-10-07     99.43    100.12    98.73      98.75    42094200      96.67644
2014-10-08     98.76    101.11    98.31     100.80    57404700      98.68340
2014-10-09    101.54    102.38   100.61     101.02    77376500      98.89877

我想要这样的东西

  Date      AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
2014-10-01    100.59    100.69    98.70      99.18    51491300      97.09741
2014-10-02     99.27    100.22    98.04      99.90    47757800      97.80230
2014-10-03     99.44    100.21    99.04      99.62    43469600      97.52818

我试过这个

colnames(df)[1] <- "Date"

但它改变了AAPL.Open的标题。

3 个答案:

答案 0 :(得分:3)

使用write.zoo代替write.csv将xts对象写入csv文件。如果您希望索引列标题为&#34;日期&#34;请设置index.name = "Date"而不是&#34;索引&#34; (默认)。

例如:

require(quantmod)
getSymbols("AAPL")
write.zoo(AAPL, file="AAPL.csv", sep=",", index.name="Date")
readLines("AAPL.csv", n=3)
# [1] "\"Date\",\"AAPL.Open\",\"AAPL.High\",\"AAPL.Low\",\"AAPL.Close\",\"AAPL.Volume\",\"AAPL.Adjusted\""
# [2] "2007-01-03,86.289999,86.579999,81.899999,83.800002,309579900,11.146771"                            
# [3] "2007-01-04,84.050001,85.949998,83.820003,85.659998,211815100,11.394181"

然后,您可以使用read.zoo将这些类型的文件读入zoo对象(可以通过as.xts转换为xts)。

我还建议你使用saveRDSsave以二进制格式保存文件,除非你绝对必须将它们保存为纯文本。

答案 1 :(得分:2)

引用Joshua Ulrich,“ ThreadLocal默认情况下不返回data.frame;它返回getSymbols个对象。xts个对象没有行名它们有一个索引属性,您可以使用xts函数访问它。

然后你需要:

index

答案 2 :(得分:1)

您可以这样做:

df$Date <- row.names(df)
row.names(df) <- NULL