当数据集为月度时,如何计算季度环比变化百分比

How to calculate Quarter Over Quarter %change when the dataset is monthly

我有这个 df,它的观察结果是按月表示的:

library(dplyr)
library(lubridate)

Date <- seq(from = as_date("2019-11-01"), to = as_date("2020-10-01"), by = "month")

A <- (10:21)

df <- data.frame(Date, A)
view(df)

    Date         A
   <date>     <int>
 1 2019-11-01    10
 2 2019-12-01    11
 3 2020-01-01    12
 4 2020-02-01    13
 5 2020-03-01    14
 6 2020-04-01    15
 7 2020-05-01    16
 8 2020-06-01    17
 9 2020-07-01    18
10 2020-08-01    19
11 2020-09-01    20
12 2020-10-01    21

使用 lag() 我知道如何计算月环比 (MoM) 的百分比变化,但无法将一个季度与上一季度进行比较:即 3 个月与上一季度的总和前 3 个月的总和。我尝试了循环方法,但它没有用,应该有更有效的方法。

如果有人能提供帮助,我将不胜感激。

我们可以使用 zoo 中的 as.yearqtr 将 'Date' 列转换为四分之一,按 sum 进行分组,然后得到 Difference在当前和下一个 (lead) 或当前和上一个 (lag)

之间
library(dplyr)
library(zoo)
df %>%
      group_by(Quarter = as.yearqtr(Date)) %>%
      summarise(A = sum(A), .groups = 'drop') %>%
      mutate(Diff = lead(A) - A)

-输出

# A tibble: 5 x 3
#  Quarter       A  Diff
#  <yearqtr> <int> <int>
#1 2019 Q4      21    18
#2 2020 Q1      39     9
#3 2020 Q2      48     9
#4 2020 Q3      57   -36
#5 2020 Q4      21    NA