R从完整的市场交易历史中找出每小时均值与平均每日价格的差异

时间:2016-01-06 11:36:55

标签: r

我在一段时间内有一个市场交易所所有交易的表格。

Epoch        Date       Time     Price
1.452033e+12 2016-01-05 14:37:38 0.00220556
1.452033e+12 2016-01-05 14:37:31 0.00220888
1.452033e+12 2016-01-05 14:37:15 0.00220888

我想知道价格和时间之间是否有任何联系。我的计划是每天采取平均价格,并从当天的每个价格中减去它,以获得与平均值的差异。然后,对于每小时间隔,计算平均差异。然后,对于每天24小时的每个时段,计算平均每小时平均差异。

到目前为止,我想出了如何使用tapply()来获得每天的平均价格。我可以将for循环用于其他所有内容,但我想学习在R中更简洁地使用它的技巧。

1 个答案:

答案 0 :(得分:3)

使用dplyr包你可以这样做:

library(dplyr)
df %>% group_by(Date) %>% mutate(normalizedPrice = Price - mean(Price, na.rm = TRUE))

要按小时执行相同的操作,您可以为“一天中的小时”添加新列。并执行非常类似的操作:

df$hourOfDay <- format(df$Time, '%H') # You will need time in POSIXct format
df %>% group_by(hourOfDay) %>% mutate(normalizedHourOfDayPrice = Price - mean(Price, na.rm = TRUE))

注意,如果您以当前格式留出时间,您还可以使用substr()来提取hourOfDay。

您还可以按天和小时分组,如下所示:

df %>% group_by(Date, hourOfDay) %>% mutate(normalizedDailyHourOfDayPrice = Price - mean(Price, na.rm = TRUE))

等等......这有用吗?