【问题标题】:R: merge.xts common columnsR:merge.xts 常用列
【发布时间】:2012-01-05 21:00:45
【问题描述】:

调用merge.xts 后,我生成的时间序列对象有 3 列,分别命名为 A.1、B.1、C.1。原始 xts 对象都设置了 A、B、C 列。我假设合并是按照文档在所有公共列上执行的。

我检查了列内容 A、B、C 和 A.1、B.1、C.1。对my.merged[my.merged$A.1 != my.merged$A, ] 的调用不会为所有这些列返回任何行。

为什么公共列没有折叠在一组中?

【问题讨论】:

    标签: r merge xts


    【解决方案1】:

    ?merge.xts 很清楚地说它是“用于按时间(索引)对'xts'对象执行合并操作。”它没有说合并是在公共列上完成的。您可能在 ?merge 中读到过,参考了 data.frame 方法。

    【讨论】:

    • 谢谢。除了在合并后手动删除它们之外,还有什么方法可以避免 merge.xts() 中的双列?
    • @RobertKubrick:在合并前删除它们或在合并后删除它们。这会给merge.xts 增加很多复杂性来检查两个或多个正在合并的对象中的列是否相等(例如,如果数据相同但列名不同怎么办?比较浮点数的容差是多少?如果两个对象中的列中的数据相同,但第三个对象中名称相似的列不同怎么办?等等,等等)。
    【解决方案2】:

    我想你可能想要的是rbind,而不是merge。我在http://darrendev.blogspot.jp/2012/08/small-rxts-code-snippets-and-tips.html 写了一篇博客,并附有示例数据(请参阅第 6a 和 6b 项)。

    如果您在要合并的两个 xts 对象中具有相同的时间戳,那么您将获得重复的行。因此,为了获得您想要的结果,您可以在后处理步骤中删除重复项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-08
      • 1970-01-01
      • 2010-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-02
      • 1970-01-01
      相关资源
      最近更新 更多