【问题标题】:How to use the write.table function in R?如何在 R 中使用 write.table 函数?
【发布时间】:2011-12-16 18:47:10
【问题描述】:

我正在尝试使用命令write.table(ESH2, "c:/ESH2.txt", sep=",") 将对象保存到文本文件中。问题是保存的时间序列不包含我下载的日期和时间值。我使用了包 twsInstrument 和命令 getBAT(ESH2)

我使用命令load(file = "C:/ESH2.Rdata")将其加载到R中时的数据

               ES.Bid.Price ES.Ask.Price ES.Trade.Price ES.Mid.Price ES.Volume
1323700200        1237.25        1237.50        1237.50     1237.375      6954
1324057980        1210.25        1210.50        1210.25     1210.375      3792
1324058040        1210.50        1211.00        1211.00     1210.750      3305
.........
.........
.........
1324058100           NA           NA             NA           NA         823

attr(,".indexCLASS")
[1] POSIXct POSIXt 
attr(,".indexTZ")
[1] 
attr(,"from")
[1] 20111211  23:59:59
attr(,"to")
[1] 20111216  23:59:59
attr(,"src")
[1] IB
attr(,"updated")
[1] "2011-12-16 18:54:55 CET"

第一列应显示 Date_Time 而不是 1323700200。

我正在寻找一种简单的方法来每周下载一次数据并合并数据。

p.s 是的,我可以通读教程/书籍来完成这项工作,是的,我会这样做,但问题是我没有时间。我想这周开始收集数据,因为交互式经纪人正在限制数据请求1min data = 5DAYS maximum。感谢您提供任何帮助和建议。

【问题讨论】:

  • 能否发布一个可重现的示例? stackoverflow.com/q/5963269/687713
  • 您需要提供更多详细信息(例如reproducible example)。
  • 这仍然很难重现,因为即使在安装了twsInstrument 及其所有依赖项之后,我发现我仍然需要一个盈透证券账户才能使用currency("USD"); getBAT("ESH2")。但是,我认为现在知道您的对象是 xts 对象会有所帮助...
  • 写下(并删除)我自己的答案后,我现在看到@DWin 的答案是正确的。你试过了吗???

标签: r xts zoo


【解决方案1】:

您可能有一个 xts 或 zoo 对象并且需要使用 write.zoo 函数。如果我对“ESH2”对象的结构是正确的,那么您称为“第一列”的数据实际上是在 zoo/xts 用语中是“索引”的行名,而可以使用 @ 访问数据987654322@ 是一个矩阵对象。

来自 read/write.zoo 页面上的示例:

Lines <- "CVX 20070201 9 30 51 73.25 81400 0
CVX 20070201 9 30 51 73.25 100 0
CVX 20070201 9 30 51 73.25 100 0
CVX 20070201 9 30 51 73.25 300 0
CVX 20070201 9 30 51 73.25 81400 0
CVX 20070201 9 40 51 73.25 100 0
CVX 20070201 9 40 52 73.25 100 0
CVX 20070201 9 40 53 73.25 300 0"

z <- read.zoo(textConnection(Lines), 
    colClasses = c("NULL", "NULL", "numeric", "numeric", "numeric", "numeric",
        "numeric", "NULL"), 
    col.names = c("Symbol", "Date", "Hour", "Minute", "Second", "Price", 
        "Volume", "junk"),
    index = 1:3,  # do not count columns that are "NULL" in colClasses
    FUN = function(h, m, s) times(paste(h, m, s, sep = ":")),
    FUN2 = function(tt) trunc(tt, "00:00:05"),
    aggregate = mean)
# The only material I added.
write.zoo(z)
"Index" "Price" "Volume"
09:30:50 73.25 32660
09:40:50 73.25 166.666666666667

【讨论】:

  • 相当令人印象深刻的演绎,我亲爱的 dwin :)。我不知道 OP 在做什么......
【解决方案2】:

如果您的唯一目标是保存对象,以便将来可以再次从 R 访问它,那么使用

save(ESH2, file = "C:/ESH2.Rdata") # or whatever you want to call the saved file

将为您做到这一点。您可以稍后使用 load 再次取回该对象:

load(file = "C:/ESH2.Rdata")

但正如 cmets 中所述,如果您需要帮助以使 write.table 或 write.csv 解决方案正常工作,那么您需要提供更多信息。

【讨论】:

  • 您应该将此信息添加到您的问题中(通过编辑它),并显示str(ESH2) 的结果。
猜你喜欢
  • 2012-02-20
  • 1970-01-01
  • 1970-01-01
  • 2022-01-06
  • 1970-01-01
  • 2021-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多