计算两个日期之间的平均值

时间:2018-07-12 14:27:50

标签: r datatable mean

我有一个数据表,其中包含日期,库存,每日收益,开始日期和结束日期。

我想计算每个股票特定的开始日期和结束日期之间的每日收益平均值,其中end date=datestart date=date-1 year。该图像只是我的数据表的一小部分,其中包含5个不同的时间段(2009-2010, 2010-2011...2014-2015)

enter image description here

pic1

1 个答案:

答案 0 :(得分:0)

首先创建数据集:

d1 <- data.frame(Date = seq.Date(as.Date("2009-04-07"), as.Date("2015-04-06"), by = "day"), stock = 60004)
d2 <- data.frame(Date = seq.Date(as.Date("2009-04-07"), as.Date("2015-04-06"), by = "day"), stock = 60005)
d3 <- data.frame(Date = seq.Date(as.Date("2009-04-07"), as.Date("2015-04-06"), by = "day"), stock = 60006)
d4 <- data.frame(Date = seq.Date(as.Date("2009-04-07"), as.Date("2015-04-06"), by = "day"), stock = 60007)

dat <- rbind(d1, d2, d3, d4)

dat$D <- rnorm(dim(dat)[1])
dat$stock <- as.factor(dat$stock)

datzoo$rollmean <- ave(dats$D, datzoo$stock, FUN = function(x) rollmean(x, k = 365, fill = 0, align = "right"))

要使ave最佳工作,应将stock转换为一个因数,然后设置ave函数,其中k是窗口大小(滚动365表示:天); fill是用NA值填充的内容; align的作用是让函数知道哪一侧(左侧与数据集的顶部相同,右侧与数据集的底部相同),从而计算滚动平均值。