我正在尝试根据时间对高/低点的聚类进行研究。我设法通过在日内数据上使用to.daily
并使用以下方法合并两者来实现上述目标:
intraday.merge <- merge(intraday,daily)
intraday.merge <- na.locf(intraday.merge)
intraday.merge <- intraday.merge["T08:30:00/T16:30:00"] # remove record at 00:00:00
接下来,我尝试使用以下方法获取高== daily.high / low == daily.low的记录:
intradayhi <- test[test$High == test$Daily.High]
intradaylo <- test[test$Low == test$Daily.Low]
产生的数据类似于以下内容:
Open High Low Close Volume Daily.Open Daily.High Daily.Low Daily.Close Daily.Volume
2012-06-19 08:45:00 258.9 259.1 258.5 258.7 1424 258.9 259.1 257.7 258.7 31523
2012-06-20 13:30:00 260.8 260.9 260.6 260.6 1616 260.4 260.9 259.2 260.8 35358
2012-06-21 08:40:00 260.7 260.8 260.4 260.5 493 260.7 260.8 257.4 258.3 31360
2012-06-22 12:10:00 255.9 256.2 255.9 256.1 626 254.5 256.2 253.9 255.3 50515
2012-06-22 12:15:00 256.1 256.2 255.9 255.9 779 254.5 256.2 253.9 255.3 50515
2012-06-25 11:55:00 254.5 254.7 254.4 254.6 1589 253.8 254.7 251.5 253.9 65621
2012-06-26 08:45:00 253.4 254.2 253.2 253.7 5849 253.8 254.2 252.4 253.1 70635
2012-06-27 11:25:00 255.6 256.0 255.5 255.9 973 251.8 256.0 251.8 255.2 53335
2012-06-28 09:00:00 257.0 257.3 256.9 257.1 601 255.3 257.3 255.0 255.1 23978
2012-06-29 13:45:00 253.0 253.4 253.0 253.4 451 247.3 253.4 246.9 253.4 52539
使用子集有重复的结果,我如何只实现当天的第一个记录?然后,我可以绘制当天的记录数。
此外,是否有其他方法可以获得我想要的结果?提前谢谢。
编辑:
示例输出应该如下所示,count可以是当天的第一个结果,也可以是聚合的(当天超过1次):
Time Count
08:40:00 60
08:45:00 54
08:50:00 60
...
14:00:00 20
14:05:00 12
14:10:00 30
答案 0 :(得分:0)
您可以通过以下方式获得每天的第一次观察:
y <- apply.daily(x, first)
然后您可以根据小时和分钟简单地汇总计数:
z <- aggregate(1:NROW(y), by=list(Time=format(index(y),"%H:%M")), sum)