gpt4 book ai didi

R时间序列-三个月三个月的百分比变化

转载 作者:行者123 更新时间:2023-12-05 04:38:25 25 4
gpt4 key购买 nike

我在 R 中有一个时间序列 (df),我想为其计算不同时期的百分比变化:

month  x 
Jan 1
Feb 4
Mar 5
Apr 3
May 1
Jun 2

我可以使用以下方法计算系列的每月百分比变化:

df <- df %>% 
mutate(mom_pct = (count/lag(count)*100-100))

这导致

month  x mom_pct 
Jan 1 NA
Feb 4 300
Mar 5 25
Apr 3 -40
May 1 -66.67
Jun 2 100

但是,我不知道如何计算三个月的百分比变化(即最后三个月的总和除以前三个月)。我尝试了以下方法:

df <- df %>% 
mutate("3mo3m_pct" = (rollapplyr(count, 3, sum, fill = NA)/rollapplyr(lag(count, -3), 3, mean, fill = NA))*100-100)

但这会返回错误 - x n 必须是非负整数标量,而不是长度为 1 的 double 向量。

最佳答案

定义一个 pct 函数并在 rollapplyr 中使用它:

library(dplyr)
library(zoo)

pct <- function(x) 100 * (sum(tail(x, 3)) / sum(head(x, 3)) - 1)
df %>% mutate(pct = rollapplyr(x, 6, pct, fill = NA))

注意事项

可重现形式的输入

Lines <- "month  x 
Jan 1
Feb 4
Mar 5
Apr 3
May 1
Jun 2"
df <- read.table(text = Lines, header = TRUE, strip.white = TRUE)

关于R时间序列-三个月三个月的百分比变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70608770/

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