R中每年属于季度的平均值

  • 本文关键字:季度 平均值 属于 r mean
  • 更新时间 :
  • 英文 :


我正在使用R,试图找到每年都有4个季度数据的平均值。

我首先从在线抓取数据,将数据转换为时间序列对象,选择所需的时间范围,转换为 xts 对象,然后使用 apply.yearly() 函数。

library(rvest)
library(xts) 
library(magrittr)
inflation <- html("http://www.bankofcanada.ca/rates/indicators/capacity-and-inflation-pressures/inflation/historical-data/")
data1 <- inflation %>%  
html_nodes("td:nth-child(2)") %>%  
html_text() %>%  
as.numeric() %>%  
rev() %>%  #reverses the order of the vector  
na.omit() %>%  
ts(frequency = 4, start = c(1993,1))`  
clean_canada <- window(data1, 2000, c(2014,4)) %>%  #selects a window starting at 2000, ending at period 4 of 2014
as.xts() %>%
apply.yearly(mean)

然而,这似乎每 4 个季度生成一个滚动平均值,而不是为每个日历年生成一个平均值。有人知道修复吗?

只是为了检查我们是否通过使用 apply.yearly 获得滚动平均值。 将"xts"对象转换为data.frame,使用传统组按"年"和summarise得到mean

library(dplyr)
window(data1, 2000, c(2014,4)) %>%
          as.xts() %>%
          as.data.frame() %>% 
          group_by(grp = sub("\s+.*", '', row.names(.))) %>% 
          summarise(Mean=mean(V1))
#   grp  Mean
#   (chr) (dbl)
#1   2000 1.300
#2   2001 2.100
#3   2002 2.300
#4   2003 2.200
#5   2004 1.600
#6   2005 1.550
#7   2006 1.975
#8   2007 2.125
#9   2008 1.675
#10  2009 1.775
#11  2010 1.725
#12  2011 1.725
#13  2012 1.700
#14  2013 1.250
#15  2014 1.800

apply.yearly也将提供相同的输出,只是返回的index将是特定年份的最后一个季度。 它没有做任何滚动平均,并在描述中提到

详细信息:将函数应用于非重叠时间的简单机制 期间,例如每周、每月等。不同于滚动功能 因为这将根据指定的时间段对数据进行子集化 (隐式在调用中),并返回每个周期的值向量 在原始数据中。

window(data1, 2000, c(2014,4)) %>% 
          as.xts() %>%
          apply.yearly(mean)
#       [,1]
#2000 Q4 1.300
#2001 Q4 2.100
#2002 Q4 2.300
#2003 Q4 2.200
#2004 Q4 1.600
#2005 Q4 1.550
#2006 Q4 1.975
#2007 Q4 2.125
#2008 Q4 1.675
#2009 Q4 1.775
#2010 Q4 1.725
#2011 Q4 1.725
#2012 Q4 1.700
#2013 Q4 1.250
#2014 Q4 1.800

最新更新