按日期对数据框执行计算

时间:2017-01-28 08:49:52

标签: r

我在R中有一个数据框,格式如下:

enter image description here

(日期格式错误但我可以很容易地更改它们。)

现在,我想知道如何在某些日期之间对数据框执行操作 - 例如,我想找到当天平均价格的5/18/2012,然后我想找到平均价格对于2012年5月19日,然后同样的2012年5月20日,我将如何这样做?提前谢谢。

编辑:我有一个想法是使用相同的(x,y)函数来比较两个日期,但是因为它是一个非常大的数据框(大约300,000行),我更喜欢更有效的方式:)

2 个答案:

答案 0 :(得分:4)

您可以尝试按日期分组并执行类似的平均值:

library(dplyr); 
data %>% group_by(RecordDate) %>% summarise(av = mean(Price));

答案 1 :(得分:3)

您可以使用aggregate

x <- Sys.time()
y <- seq(from = x, to = x + 5 * 3600*24, by = "day")
xy <- data.frame(date = rep(y, each = 5),
                 value = rnorm(length(y)))

aggregate(value ~ date, data = xy, FUN = mean)

                 date     value
1 2017-01-28 10:07:29 0.2921081
2 2017-01-29 10:07:29 0.9039815
3 2017-01-30 10:07:29 0.5616696
4 2017-01-31 10:07:29 0.9297463
5 2017-02-01 10:07:29 0.5149972
6 2017-02-02 10:07:29 0.4353255

> aggregate(value ~ date, data = xy, FUN = length)
                 date value
1 2017-01-28 10:07:29     5
2 2017-01-29 10:07:29     5
3 2017-01-30 10:07:29     5
4 2017-01-31 10:07:29     5
5 2017-02-01 10:07:29     5
6 2017-02-02 10:07:29     5