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