我可以在R中使用write.csv写入xts对象吗

我可以在R中使用write.csv写入xts对象吗,r,xts,R,Xts,我有一个xts对象,第一列是日期时间,后面是OHLC。我打字的时候 >test 它打印正确的输出,如下所示: 2010-09-08 15:13:00 115 115 110 115 2010-09-08 15:14:00 120 125 115 125 但是,当我尝试编写.csv(test,“test.csv”)时 它只写OHLC-为什么。我使用什么命令来同时写入日期和时间 这就是str(测试)的样子: An ‘xts’ object from 2010

我有一个xts对象,第一列是日期时间,后面是OHLC。我打字的时候

>test
它打印正确的输出,如下所示:

2010-09-08 15:13:00   115   115  110    115
2010-09-08 15:14:00   120   125  115    125
但是,当我尝试编写.csv(test,“test.csv”)时 它只写OHLC-为什么。我使用什么命令来同时写入日期和时间

这就是str(测试)的样子:

An ‘xts’ object from 2010-06-30 15:47:00 to 2010-09-08 15:14:00 containing:
  Data: num [1:21757, 1:4] 215 220 205 195 185 ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr [1:4] "y.Open" "y.High" "y.Low" "y.Close"
  Indexed by objects of class: [POSIXlt,POSIXt] TZ: 
  xts Attributes:  
 NULL

可以,最简单的方法可能是通过
write.zoo

R> write.zoo
function (x, file = "", index.name = "Index", row.names = FALSE, 
    col.names = NULL, ...) 
{
    if (is.null(col.names)) 
        col.names <- !is.null(colnames(x))
    dx <- as.data.frame(x)
    stopifnot(all(names(dx) != index.name))
    dx[[index.name]] <- index(x)
    dx <- dx[, c(ncol(dx), 1:(ncol(dx) - 1))]
    write.table(dx, file = file, row.names = row.names, col.names = col.names, 
        ...)
}
<environment: namespace:zoo>
R> 

2012年1月25日编辑使用
row.names=FALSE
,而不是
TRUE
来抑制双行名称。由于默认值为
row.names=FALSE,请将其从调用中删除。

最简单的方法是在
write.csv
调用中首先转换为数据帧

你完成了


如果您在Excel中打开它,您现在应该在A列中有日期/时间索引,在B列中有OHLC对象:E

为什么不使用saveSymbols()

离开了@Dirk Eddelbuettel在回答中提供的矩阵

xmat <- xts(mat, order.by=Sys.Date() + seq(-4,0))
saveSymbols(xmat, file.path="/tmp/xmat.csv")

xmat-Dirk,几个小时以来我一直在想如何去掉.csv中的重复日期列,但到目前为止运气不佳。另外,当我运行
>xmat[,1]A 2012-01-21-1.4232098 2012-01-22 0.1456240 2012-01-23-0.6625430 2012-01-24-0.3947322 2012-01-25 0.5433947
时,它会再次返回日期,而我只想获取A中的值。这是可能的。对不起,我们需要
行。name=FALSE
这是默认值。我已经相应地编辑了我的帖子。
saveSymbols
保存一个二进制.RData文件,而不是CSV。我应该删除我的答案还是保留它,但将其标记为不正确?我想离开它,这样其他人可以从我的愚蠢中学习。
R> write.zoo(xmat, file="/tmp/demo.csv", sep=",")
R> system("cat /tmp/demo.csv")
"Index","A","B","C","D"
2012-01-19,-2.53047680387774,0.545404313269755,0.754669841541681,0.330616876246245
2012-01-20,-0.519904544868541,0.394328857686792,-1.27152367237311,-2.24311276135881
2012-01-21,-0.0996276931028331,-0.0513062656752562,-0.846309564748021,-0.14072731914499
2012-01-22,0.381998053276389,0.523070920853495,1.13110826400249,2.39831100812159
2012-01-23,1.43669757366164,-1.77507724264279,0.193935657150967,1.04775355172344
R> 
write.csv(as.data.frame(test),"test.csv")
xmat <- xts(mat, order.by=Sys.Date() + seq(-4,0))
saveSymbols(xmat, file.path="/tmp/xmat.csv")