【问题标题】:data.frame object to xts object conversion in RR中的data.frame对象到xts对象的转换
【发布时间】:2011-03-31 07:35:06
【问题描述】:

我想尽可能高效地将我的 csv 文件转换为 xts 对象。尽管必须先应用 read.zoo 方法来创建动物园对象,然后才能将其转换为 xts 对象,但我似乎陷入了困境。

gold <- read.zoo("GOLD.CSV", sep=",", format="%m/%d/%Y", header=TRUE)

Gold <- as.xts (gold, order.by=index(gold), frequency=NULL)

这是将我的初始 GOLD.CSV 文件转换为 R xts 对象的最有效方法吗?

【问题讨论】:

    标签: r dataframe xts


    【解决方案1】:

    如果是文件,则需要读取。

    所以像你一样使用read.zoo() -- 但马上转换:

     gold <- as.xts(read.zoo("GOLD.CSV", sep=",", format="%m/%d/%Y", header=TRUE))
    

    好吗?

    【讨论】:

    • 行得通!我不清楚如何避免传递 order.by 参数。无论如何,我不确定您能否在效率方面超越那条线。似乎没有 read.xts 函数存在或工作中。
    • 如果已经是zoo对象,则有索引,不需要order.by
    • @Milktrader,我认为你混淆了xtsas.xts。比较args(xts:::as.xts.zoo)args(xts)
    【解决方案2】:

    您可以编写自己的read.xts 函数。我们将其称为包装函数,它应该类似于

    read.xts <- function(x, format = "%m/%d/%Y", header = TRUE, sep = ",") {
      result <- as.xts(read.zoo(x, sep = sep, format = format, header = header))
      return(result)
    }
    
    read.xts(file.choose())  # select your file
    

    注意function() 中的参数。它们被传递到函数体(大括号之间的代码)。如果function() 参数有值,这意味着这是它们的默认值。如果您分配新值(例如function(x = "my.file.csv", sep = "\t")),它们将覆盖默认值。最后一行向您展示了如何使用新功能。随意使用其余的 read.zoo 参数扩展此功能。如果您对如何操作有任何具体问题,请不要害羞而直接问。 :)

    我在日常工作中使用了一些类似的小宝石。我创建了一个名为 workhorse.R 的文件,并在需要任何小功能时加载它(例如 source("d:/workspace/workhorse.R"))。

    【讨论】:

    • 一个我没有考虑过的最棒的想法,因为我还在用我的 R 知识进行函数前编写。功能对我来说是下一个,所以这是一个完美的应用程序。另外,感谢您定义“包装器”功能,因为这句话对我来说是不透明的。现在开始下沉了。
    • 别害怕 --- 它可以像单行线一样简单:cubed &lt;- function(x) x^3。现在试试cubed(1:3)
    猜你喜欢
    • 2021-11-12
    • 2014-05-17
    • 1970-01-01
    • 2018-09-03
    • 2020-03-07
    • 2011-09-26
    • 2017-05-29
    • 2016-01-07
    • 1970-01-01
    相关资源
    最近更新 更多