我在R中有一个数据框,格式如下:
(日期格式错误但我可以很容易地更改它们。)
现在,我想知道如何在某些日期之间对数据框执行操作 - 例如,我想找到当天平均价格的5/18/2012,然后我想找到平均价格对于2012年5月19日,然后同样的2012年5月20日,我将如何这样做?提前谢谢。
编辑:我有一个想法是使用相同的(x,y)函数来比较两个日期,但是因为它是一个非常大的数据框(大约300,000行),我更喜欢更有效的方式:)答案 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