我在一段时间内有一个市场交易所所有交易的表格。
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中更简洁地使用它的技巧。
答案 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))
等等......这有用吗?