如何计算新变量中的通货膨胀率?

问题描述 投票:0回答:1

所以我有这张表,我需要使用这些数据找到每季度的通货膨胀率。 这是计量经济学,所以我相信我必须使用的公式是这样的: 通货膨胀率=(CPI前值-CPI当前/CPI当前。 这必须在一个名为

Inflation Rate
的新变量中完成。

          Country Year Quarter Business confidence         CPI
1   Australia 2000       1           100.74487       1.57632489
2   Australia 2000       2           100.33320       2.11182007
3   Australia 2000       3            99.93596       2.85817122
4   Australia 2000       4            98.47090       2.82927131
5   Australia 2001       1            98.46135       2.78136511
6   Australia 2001       2            99.32677       3.08314356

有人可以帮助我吗?

我尝试在 YouTube 和 ChatGPT 上寻找实现此目的的方法,但没有找到任何结果。如果有人知道可以帮助我的视频,请给我看。

rstudio economics
1个回答
0
投票

这里是:

library(tidyverse)

toy_data <- tibble::tribble(
  ~Country,    ~Year, ~Quarter, ~Business_confidence,       ~CPI,
  "Australia",  2000,        1,            100.74487, 1.57632489,
  "Australia",  2000,        2,             100.3332, 2.11182007,
  "Australia",  2000,        3,             99.93596, 2.85817122,
  "Australia",  2000,        4,              98.4709, 2.82927131,
  "Australia",  2001,        1,             98.46135, 2.78136511,
  "Australia",  2001,        2,             99.32677, 3.08314356)


# Suppose you have - or want - the `lag(default = ...)`
CPI_1999_Q4 <- 2

# If you don't, `default` is `NA`
new_data <- mutate(
  toy_data,
  rate = (lag(CPI, n = 1L, default = CPI_1999_Q4) - CPI) / CPI)

输出:

> new_data
# A tibble: 6 × 6
  Country    Year Quarter Business_confidence   CPI    rate
  <chr>     <dbl>   <dbl>               <dbl> <dbl>   <dbl>
1 Australia  2000       1               101.   1.58  0.269 
2 Australia  2000       2               100.   2.11 -0.254 
3 Australia  2000       3                99.9  2.86 -0.261 
4 Australia  2000       4                98.5  2.83  0.0102
5 Australia  2001       1                98.5  2.78  0.0172
6 Australia  2001       2                99.3  3.08 -0.0979

dplyr::lag
dplyr::lead
参考这里以及之前关于R向量或数据帧中的基本滞后的问题

创建于 2024-05-09,使用 reprex v2.1.0

© www.soinside.com 2019 - 2024. All rights reserved.