【发布时间】:2014-10-20 10:01:24
【问题描述】:
我有两个数据框,一个包含交易数据(可以在任何时间间隔内发生),另一个将时间分解为每小时间隔。两者都包含带有日期和时间的列。一小时内可能有几笔交易,我想将交易数据框中一小时内的所有交易汇总到每小时数据框中的一行。
例如:
交易表
Time Amount
2014-09-10 13:01:01 10
2014-09-10 13:05:13 20
2014-09-10 13:59:40 1
2014-09-10 14:30:45 2
2014-09-10 14:50:00 30
我想在每小时表中汇总如下:
Time Amount
2014-09-10 14:00:00 31 (i.e. 10+20+1)
2014-09-10 15:00:00 32 (i.e. 2+30)
以上,2014-09-10 13:00:00 和2014-09-10 14:00:00 之间的所有交易都已汇总并置于2014-09-10 14:00:00 下
我当前的代码如下所示:
for (m in 2:nrow(hourlyData))
{
hourlyData[m,2] = sum(as.numeric(tradeData[intersect(which(tradeData[,1] < hourlyData[m,1]),
which(tradeData[,1] >= hourlyData[m-1,1])),2])) #Get P&L aggregated by date
}
有效,但速度很慢。
有没有人建议我如何在没有 for 循环的情况下做到这一点?
谢谢
迈克
【问题讨论】: