当数据集为月度时,如何计算季度环比变化百分比
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
进行分组,然后得到 Diff
erence在当前和下一个 (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
我有这个 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
进行分组,然后得到 Diff
erence在当前和下一个 (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