R 合并数据帧以创建分组的时间序列
我想创建一个分组的时间序列(层次结构)。基本上每年有四个季度和12个月。年度是总计,季度是月份的小计。月是底值。我试图使用Robert Handyman(R 合并数据帧以创建分组的时间序列,r,merge,time-series,R,Merge,Time Series,我想创建一个分组的时间序列(层次结构)。基本上每年有四个季度和12个月。年度是总计,季度是月份的小计。月是底值。我试图使用Robert Handyman(forecast)的hts库的gts:,但我遗漏了一些东西。初步演示数据如下所示 library(tidyr) 表1: ts(rnorm(67), start=c(2015, 4),frequency=12) 表2: aggregate(ts(rnorm(67), start=c(2015, 4), frequency=12), nfr
forecast
)的hts
库的gts
:,但我遗漏了一些东西。初步演示数据如下所示
library(tidyr)
表1:
ts(rnorm(67), start=c(2015, 4),frequency=12)
表2:
aggregate(ts(rnorm(67), start=c(2015, 4), frequency=12), nfrequency=4)
任何建议如何创建一个列作为一年的总计,然后按季度汇总,并表示月份。这基本上意味着,数据集上存在年-季度-月的层次结构。如果您不坚持使用
ts()
格式,您可以将其放入数据集中,并使用zoo
、lubridate
和dplyr
中的函数来生成所需的输出
library(dplyr)
library(zoo)
library(tibble)
library(lubridate)
x <- ts(rnorm(67), start=c(2015, 4),frequency=12)
dat <- tibble(
# change time of the ts object into year-month
# and extract just the month
m = month(as.yearmon(time(x))),
# change time of the ts object to year-month
# and extract the year
year = year(as.yearmon(time(x))),
# change time of the ts object to year-month
# and extract the quarter
qtr = quarter(as.yearmon(time(x))),
value = as.vector(x)) %>%
# group data by year and quarter
group_by(year, qtr) %>%
# get the sum of value for each year-quarter.
mutate(qtr_sum = sum(value)) %>%
# ungroup the data and then group again just by year
ungroup() %>%
group_by(year) %>%
# calculate the yearly sum
mutate(yr_sum = sum(value))
dat
# # A tibble: 67 x 6
# # Groups: year [6]
# m year qtr value qtr_sum yr_sum
# <dbl> <dbl> <int> <dbl> <dbl> <dbl>
# 1 4 2015 2 0.555 -1.68 -0.851
# 2 5 2015 2 -0.767 -1.68 -0.851
# 3 6 2015 2 -1.47 -1.68 -0.851
# 4 7 2015 3 -1.75 -0.0733 -0.851
# 5 8 2015 3 1.26 -0.0733 -0.851
# 6 9 2015 3 0.408 -0.0733 -0.851
# 7 10 2015 4 -0.0731 0.905 -0.851
# 8 11 2015 4 0.824 0.905 -0.851
# 9 12 2015 4 0.154 0.905 -0.851
# 10 1 2016 1 -0.231 -0.634 2.70
# # … with 57 more rows
库(dplyr)
图书馆(动物园)
图书馆(tibble)
图书馆(lubridate)
x%
#获取每个年度和季度的价值总和。
突变(qtr_sum=sum(值))%>%
#将数据解组,然后仅按年份再次分组
解组()%>%
组别(年份)%>%
#计算年度金额
变异(yr_sum=总和(值))
dat
##A tibble:67 x 6
##组别:年份[6]
#m年qtr值qtr_和yr_和
#
# 1 4 2015 2 0.555 -1.68 -0.851
# 2 5 2015 2 -0.767 -1.68 -0.851
# 3 6 2015 2 -1.47 -1.68 -0.851
# 4 7 2015 3 -1.75 -0.0733 -0.851
# 5 8 2015 3 1.26 -0.0733 -0.851
# 6 9 2015 3 0.408 -0.0733 -0.851
# 7 10 2015 4 -0.0731 0.905 -0.851
# 8 11 2015 4 0.824 0.905 -0.851
# 9 12 2015 4 0.154 0.905 -0.851
# 10 1 2016 1 -0.231 -0.634 2.70
##…还有57行
谢谢DaveArmstrong,但这个问题需要时间序列的层次结构。有什么想法吗?@lpt我不确定。从我的阅读来看,hts()
和gts()
函数意味着层次结构是时间以外的东西-就像一个整体,分解成不同组的部分(比如男性和女性)。在这个框架下,我不清楚你将如何处理你所说的分组。是的,通常你是正确的。然而,季度是月的组合,