2016-01-06 30 views
1

我有一段时间内一个证券的市场交易所有交易表。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.

回答

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 。

,还可以通过白天和HOUROFDAY这样的组:

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

等等....工作的呢?

+0

如何安装包装?我得到'库中的错误(dplyr):没有包名为'dplyr'' –

+0

你可以使用'install.packages(“dplyr”)' – Jijo

+0

真棒,它的工作!现在我知道如何分组了。只有一个问题,为什么它会在头上显示数据类型? –