首页 > 解决方案 > 当每年有不同的观察数字时,按价格指数 (CPI) 缩小数字

问题描述

我有一些格式如下所示的收入数据。所以这些年不是连续的,它们也可以重复(因为不同的公司)。

  Firm Year Revenue
1    A 2018     100
2    B 2017      90
3    B 2018      80
4    C 2016      20

我想通过除以每年适当的 CPI 来根据通货膨胀调整收入。CPI 数据如下所示:

  Year CPI
1 2016  98
2 2017 100
3 2018 101

我有一个可行的解决方案,但这是最好的方法吗?mutate那里的整个计算列很笨拙吗?

revenue <- data.frame(stringsAsFactors=FALSE,
                      Firm = c("A", "B", "B", "C"),
                      Year = c(2018L, 2017L, 2018L, 2016L),
                      Revenue = c(100L, 90L, 80L, 20L)
)

cpi <- data.frame(
  Year = c(2016L, 2017L, 2018L),
  CPI = c(98L, 100L, 101L)
)


library(dplyr)
df <- left_join(revenue, cpi, by = 'Year')
mutate(df, real_revenue = (Revenue*100)/CPI)

输出是正确的,如下图所示。但这是最好的方法吗?

  Firm Year Revenue CPI real_revenue
1    A 2018     100 101     99.00990
2    B 2017      90 100     90.00000
3    B 2018      80 101     79.20792
4    C 2016      20  98     20.40816

标签: rdplyreconomics

解决方案


推荐阅读