【发布时间】: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。