R 聚合函数-计算每个月的平均值';方差

R 聚合函数-计算每个月的平均值';方差,r,datetime,aggregate,R,Datetime,Aggregate,我正在处理日常数据: > head(data) date X 01-01-1950 100 01-02-1950 200 . . 01-01-2015 150 我正在使用的软件包:TSA,ggplot2,lubridate,xts,zoo 我想根据以下公式计算每个月的差异: myvar <- function(Month){ for (j in 1:(days_in_month(Month)-1)){

我正在处理日常数据:

 > head(data)
    date       X
 01-01-1950   100
 01-02-1950   200
     .         .
 01-01-2015   150
我正在使用的软件包:
TSA
ggplot2
lubridate
xts
zoo

我想根据以下公式计算每个月的差异:

 myvar <- function(Month){
   for (j in 1:(days_in_month(Month)-1)){
     suma = (X[j+1]-X[j])**2 }
   sig = (1/days_in_month(Month))*suma
   return(sig)
 }
现在我想把这些加起来计算每个月方差的平均值。我想到了以下几点,但我不知道如何在这里使用聚合函数:

 data$Month <- month(data$date,label=TRUE)
 data$Year <- format(data$date,format="%Y")
 aggregate( X ~ Month + Year , data , myvar )
第二步:

aggregate( X ~ Month , data , mean )

 Month  Variance
 Jan    myvar(Jan)
  .        .
 Dec    myvar(Jan)
**二月总是有28天!没有闰年!**


如果可能的话,我想直接获得每个月的平均值(即步骤2)。

这里有一种方法,使用该软件包执行您概述的步骤:

library(dplyr)
data %>%
  mutate(date = mdy(date), month = month(date), year = year(date)) %>%
  group_by(month, year) %>%
  summarise(variance = var(X)) %>%
  group_by(month) %>%
  summarise(meanVariance = mean(variance))
结果:

Source: local data frame [1 x 2]

  month meanVariance
1     1         3725
data <- read.table(header = TRUE, text = "    date       X
 01-01-1950   100
 01-02-1950   200
 01-01-2015   150
 01-02-2015   220")
使用的数据:

Source: local data frame [1 x 2]

  month meanVariance
1     1         3725
data <- read.table(header = TRUE, text = "    date       X
 01-01-1950   100
 01-02-1950   200
 01-01-2015   150
 01-02-2015   220")

数据为真,不起作用。但是,它在日期起作用,因此月内天数(数据$date[1])=31