【问题标题】:Merging in R based on dates基于日期在R中合并
【发布时间】:2013-08-21 21:28:57
【问题描述】:

我正在使用getSymbols 将股票数据从 Yahoo 导入到 R。

当我将它存储在数据框中时,它采用以下格式。

          IDEA.BO.Open IDEA.BO.High IDEA.BO.Low IDEA.BO.Close IDEA.BO.Volume
2007-03-09        92.40        94.25       84.00         85.55       63599400
2007-03-12        85.55        89.95       85.55         87.40       12490900
2007-03-13        88.50        91.25       86.20         89.85       16785000
2007-03-14        87.05        90.85       86.60         87.75        7763800
2007-03-15        90.00        94.00       88.80         91.45       14808200
2007-03-16        92.40        93.65       91.25         92.40        6365600

现在日期列没有名字了。

我想导入 2 个股票数据并根据日期合并收盘价(在任意一组随机行之间)。问题是,日期列未被识别。

我希望我的最终结果是这样的。

            IDEA.BO.Close      BHARTIARTL.BO.Close
2007-03-12      123                   333
2007-03-13      456                   645
2007-03-14      789                   999

我尝试了以下方法:

> c <- merge(Cl(IDEA.BO),Cl(BHARTIARTL.BO))
> c['2013-08/']
           IDEA.BO.Close BHARTIARTL.BO.Close

2013-08-06            NA              323.40
2013-08-07            NA              326.80
2013-08-08        157.90              337.40
2013-08-09        157.90              337.40

同样的数据在excel上是这样的:

8/6/2013    156.75  8/6/2013    323.4
8/7/2013    153.1   8/7/2013    326.8
8/8/2013    157.9   8/8/2013    337.4
8/9/2013    157.9   8/9/2013    337.4

我不明白 R 中 NA 值背后的原因以及获取不含 NA 值的合并数据的方法。

【问题讨论】:

  • -1 未显示您尝试过的内容。为什么要转换为 data.frame?将它们保留为 xts 对象,然后调用 merge(Cl(IDEA.BO),Cl(BHARTIARTL.BO))。到处都有如何做到这一点的例子。
  • 好吧,这就是我所做的。 d3 [.data.frame(d3 中的错误) , , 7) : undefined columns selected 另外: 警告信息: In zoo(d3[, 7], as.Date(d3[, 1])) : 如果索引条目在'order.by' 不是唯一的,我猜这是因为 IDEA.BO 在存储到 d3 时被转换为仅 6 列。我的想法是日期列将是第一列,调整后的价格列将是第七列。
  • 所以您要转换为 data.frame 以便创建动物园对象?当你可以打电话给as.zoo(IDEA.BO) 时,这是非常低效的。您不应该假设数据的打印方式就是数据的存储方式。 ncol(IDEA.BO) 会为您省去很多麻烦。
  • 我还尝试了以下方法:> c c['2013-08/'] IDEA.BO.Close BHARTIARTL .BO.Close 2013-08-06 NA 323.40 2013-08-07 NA 326.80 2013-08-08 157.90 337.40 2013-08-09 157.90 337.40 excel 上的相同数据如下所示:8/6/2013 156.75 8/6 /2013 323.4 8/7/2013 153.1 8/7/2013 326.8 8/8/2013 157.9 8/8/2013 337.4 8/9/2013 157.9 8/9/2013 337.4 我不明白 NA 值背后的原因在 R 中以及获得没有 NA 值的合并数据的方法。
  • 我放弃了。你的例子对我有用:getSymbols("IDEA.BO;BHARTIARTL.BO"); merge(Cl(IDEA.BO),Cl(BHARTIARTL.BO))["2013-08/"]。请参阅How to make a great R reproducible example?How do I ask a good question?StackOverflow question checklist

标签: r date merge


【解决方案1】:

您需要阅读更多关于 xtszoo 数据结构的信息。它们是具有有序索引的矩阵。当您转换为 data.frames 时,它们将成为具有“行名”属性的列表,该属性由 print.data.frame 显示,没有标题。列表元素的名称基于矩阵列的 ht 命名。 (我确实理解 Joshua 对这个问题的明显烦恼,因为他发布了许多关于如何使用 xts-objects 的 SO 示例。)

【讨论】:

    猜你喜欢
    • 2022-01-03
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    • 1970-01-01
    • 1970-01-01
    • 2014-02-28
    相关资源
    最近更新 更多