如何将标题添加到 xts 时间序列的列
How to add title to column of the xts time series
我想使用 quantmod 下载一些股票详细信息,并已使用 write.csv
成功保存文件:
write.csv(df,file="AAPL.csv")
问题是 csv 文件中的日期没有 header。
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
的标题。
你可以这样做:
df$Date <- row.names(df)
row.names(df) <- NULL
引用 , "getSymbols
默认情况下 return 不是 data.frame;它 return 是 xts
对象。xts
对象没有行名称。它们有一个索引属性,您可以使用 index
函数访问该属性。"
那么你需要:
library(quantmod)
getSymbols("AAPL")
row.names(AAPL)
# NULL
AAPL <- as.data.frame(AAPL)
AAPL$Date <- row.names(AAPL)
# Move last column to first position
# AAPL <- AAPL[,c(7, 1:6)]
cln <- ncol(AAPL) # 7
AAPL <- AAPL[, c(cln, 1:(cln-1))]
row.names(AAPL) <- NULL
head(AAPL)
# Date AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
# 1 2007-01-03 86.29 86.58 81.90 83.80 309579900 11.14677
# 2 2007-01-04 84.05 85.95 83.82 85.66 211815100 11.39418
# 3 2007-01-05 85.77 86.20 84.40 85.05 208685400 11.31304
# 4 2007-01-08 85.96 86.53 85.28 85.47 199276700 11.36891
# 5 2007-01-09 86.45 92.98 85.15 92.57 837324600 12.31332
# 6 2007-01-10 94.75 97.80 93.45 97.00 738220000 12.90259
使用 write.zoo
而不是 write.csv
将 xts objects 写入 csv 文件。如果希望索引列 header 为 "Date" 而不是 "Index"(默认值),请设置 index.name = "Date"
。
例如:
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 object(您可以通过 as.xts
将其转换为 xts)。
我还建议您使用 saveRDS
或 save
以二进制格式保存文件,除非您绝对必须将它们保存为纯文本。
我想使用 quantmod 下载一些股票详细信息,并已使用 write.csv
成功保存文件:
write.csv(df,file="AAPL.csv")
问题是 csv 文件中的日期没有 header。
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
的标题。
你可以这样做:
df$Date <- row.names(df)
row.names(df) <- NULL
引用 getSymbols
默认情况下 return 不是 data.frame;它 return 是 xts
对象。xts
对象没有行名称。它们有一个索引属性,您可以使用 index
函数访问该属性。"
那么你需要:
library(quantmod)
getSymbols("AAPL")
row.names(AAPL)
# NULL
AAPL <- as.data.frame(AAPL)
AAPL$Date <- row.names(AAPL)
# Move last column to first position
# AAPL <- AAPL[,c(7, 1:6)]
cln <- ncol(AAPL) # 7
AAPL <- AAPL[, c(cln, 1:(cln-1))]
row.names(AAPL) <- NULL
head(AAPL)
# Date AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
# 1 2007-01-03 86.29 86.58 81.90 83.80 309579900 11.14677
# 2 2007-01-04 84.05 85.95 83.82 85.66 211815100 11.39418
# 3 2007-01-05 85.77 86.20 84.40 85.05 208685400 11.31304
# 4 2007-01-08 85.96 86.53 85.28 85.47 199276700 11.36891
# 5 2007-01-09 86.45 92.98 85.15 92.57 837324600 12.31332
# 6 2007-01-10 94.75 97.80 93.45 97.00 738220000 12.90259
使用 write.zoo
而不是 write.csv
将 xts objects 写入 csv 文件。如果希望索引列 header 为 "Date" 而不是 "Index"(默认值),请设置 index.name = "Date"
。
例如:
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 object(您可以通过 as.xts
将其转换为 xts)。
我还建议您使用 saveRDS
或 save
以二进制格式保存文件,除非您绝对必须将它们保存为纯文本。