gpt4 book ai didi

r - 季度同比增长率

转载 作者:行者123 更新时间:2023-12-03 14:41:19 24 4
gpt4 key购买 nike

我一直在尝试计算从第一季度到下一年第一季度的增长率。
在 excel 中,公式看起来像这样 ((B6-B2)/B2)*100。

在 R 中完成此任务的最佳方法是什么?我知道如何获得不同时期的差异,但无法以 4 个时期的差异来完成。

这是代码:

date <- c("2000-01-01","2000-04-01", "2000-07-01",
"2000-10-01","2001-01-01","2001-04-01",
"2001-07-01","2001-10-01","2002-01-01",
"2002-04-01","2002-07-01","2002-10-01")
value <- c(1592,1825,1769,1909,2022,2287,2169,2366,2001,2087,2099,2258)
df <- data.frame(date,value)

这将产生这个数据框:
    date       value
1 2000-01-01 1592
2 2000-04-01 1825
3 2000-07-01 1769
4 2000-10-01 1909
5 2001-01-01 2022
6 2001-04-01 2287
7 2001-07-01 2169
8 2001-10-01 2366
9 2002-01-01 2001
10 2002-04-01 2087
11 2002-07-01 2099
12 2002-10-01 2258

最佳答案

这是使用 dplyr 的选项包裹:

# Convert date column to date format
df$date = as.POSIXct(df$date)

library(dplyr)
library(lubridate)

在下面的代码中,我们首先按月分组,这允许我们分别对每个季度进行操作。 arrange函数只是确保每个季度的数据按日期排序。然后我们添加 yearOverYear列使用 mutate它计算每个季度的当前年度与上一年的比率。
df = df %>% group_by(month=month(date)) %>%
arrange(date) %>%
mutate(yearOverYear=value/lag(value,1))

date value month yearOverYear
1 2000-01-01 1592 1 NA
2 2001-01-01 2022 1 1.2701005
3 2002-01-01 2001 1 0.9896142
4 2000-04-01 1825 4 NA
5 2001-04-01 2287 4 1.2531507
6 2002-04-01 2087 4 0.9125492
7 2000-07-01 1769 7 NA
8 2001-07-01 2169 7 1.2261164
9 2002-07-01 2099 7 0.9677271
10 2000-10-01 1909 10 NA
11 2001-10-01 2366 10 1.2393924
12 2002-10-01 2258 10 0.9543533

如果您希望在添加同比值后按总体日期顺序恢复数据框:
df = df %>% group_by(month=month(date)) %>%
arrange(date) %>%
mutate(yearOverYear=value/lag(value,1)) %>%
ungroup() %>% arrange(date)

或使用 data.table
library(data.table) # v1.9.5+
setDT(df)[, .(date, yoy = (value-shift(value))/shift(value)*100),
by = month(date)
][order(date)]

关于r - 季度同比增长率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30678606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com