【问题标题】:Convert data.frame to xts object and preserve types将 data.frame 转换为 xts 对象并保留类型
【发布时间】:2011-09-26 21:17:46
【问题描述】:

有没有办法从 data.frame 创建 xts 对象并保留数据类型?我的数字正在转换为字符。 2009 年的这篇文章建议将列合并到现有的 xts 中: http://r.789695.n4.nabble.com/as-xts-convert-all-my-numeric-data-to-character-td975564.html

尚不清楚这是否是唯一的方法。对于大型数据帧来说,这似乎有点麻烦和麻烦。我认为开箱即用的 xts 会尊重数据类型。

【问题讨论】:

  • 您能否提供一个您尝试转换的 data.frame 对象的小样本?

标签: r xts zoo


【解决方案1】:

不,你不能。 xts/zoo 对象是具有索引属性的矩阵,不能在矩阵中混合类型。

我们考虑过创建一个 xts-data.frame 类,但 xts 的主要关注点是速度和内存效率。 data.frames 的速度和内存效率不高,所以这不是优先事项。

【讨论】:

  • 所以输入 data.frame 只是简单地转换为矩阵?也许我错过了 xts 的重点(我是这个对象的新手)。当我想到时间序列数据时,我会想到一个包含以下列的表:Date,Characteristic1,Characteristic2,... 其中 Date 是日期/时间,Characteristic1... 是您要测量的任何内容 - 数字或分类或缺失。跨度>
  • xts 对象的“日期”不是矩阵中的列,而是附加到它的属性。你所有的“特征”必须是同一类型。
  • 根据您对 xts-data.frame 的评论,我认为这是个好主意。如果用户需要一个data.frame,那么他/她应该接受速度和内存的税。就个人而言,速度/内存对于我处理的问题类型来说不是问题——我到处使用 data.frame,因为它更自然地代表了我处理的数据类型。我很乐意为 xts/zoo 提供的所有好处支付速度/内存税。
  • 我认为这也是个好主意,但我不需要它......所以我写它的动力很小。 ;-)
  • 完全理解 =) 无论如何,xts 在 data.frame 情况下仍然有用 - 也许我无法创建单个 xts 对象,但我需要一个 xts/zoo 辅助函数(如 na.approx ) 我总是可以将我的数据框子集为数字
【解决方案2】:

我遇到了同样的问题,我的解决方案是在指定数据对象时不包括时间列。只要所有其他列都是相同类型的,应该没有问题。

数据

(data$time 是第一列,是 POSIXct,所以我将其排除在外。其他都是数字)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-07
    • 2014-05-17
    • 2018-06-20
    • 2021-11-12
    • 1970-01-01
    • 2011-03-24
    • 2021-11-16
    相关资源
    最近更新 更多