我必须计算从2015年到2019年的通货膨胀率。我必须用CPI来做这件事,这是我在四年中每个月的数据。这意味着我必须计算去年同月的增长率百分比。
他们问我几个国家的计算结果,然后计算或显示2015-2019年期间的平均值。
这是我的数据库:
data <- read.table("https://pastebin.com/raw/6cetukKb")

我已经尝试了quantmod,dplyr,lubridate包,但我不能做CPI转换。
我试过了,但我知道它是不正确的:
data$year <- year(data$date)
anual_cpi <- data %>% group_by(year) %>% summarize(cpi = mean(Argentina))
anual_cpi$adj_factor <- anual_cpi$cpi/anual_cpi$cpi[anual_cpi$year == 2014]**
更新
**
我的老师给了我们一个关于如何获得结果的提示,但当我试图将其添加到代码中时,我得到了一个错误。
data %>%
tidyr::pivot_longer(cols = Antigua_Barbuda:Barbados) %>%
group_by(name, year) %>%
summarise(value = mean(value)) %>%
mutate((change=(x-lag(x,1))/lag(x,1)*100))
| Antigua_Barbuda | -1.55 |
|----------------- |------- |
| Argentina | 1.03 |
| Aruba | -1.52 |
| Bahamas | -1.56 |
| Barbados | -1.38 |其中"value“对应于每个国家在整个2015-2019年期间的平均通货膨胀
发布于 2020-11-17 04:00:49
我们可以使用data.table方法
library(data.table)
melt(fread("https://pastebin.com/raw/6cetukKb"),
id.var = c('date', 'year', 'period', 'periodName'))[,
.(value = mean(value)), .(variable, year)][,
adj_factor := value/value[year == 2014]][]
# variable year value adj_factor
# 1: Antigua_Barbuda 2014 96.40000 1.0000000
# 2: Antigua_Barbuda 2015 96.55833 1.7059776
# 3: Antigua_Barbuda 2016 96.08333 1.0146075
# 4: Antigua_Barbuda 2017 98.40833 0.9900235
# 5: Antigua_Barbuda 2018 99.62500 0.5822618
# 6: Antigua_Barbuda 2019 101.07500 1.0484959
# 7: Argentina 2014 56.60000 1.0000000
# ..发布于 2020-11-16 14:59:43
您应该使用header = TRUE读取数据,因为第一行是列的名称。然后获取长格式的数据,这使得计算变得很容易。
在此之后,您可以执行任何您想要的计算。例如,执行与您的尝试相同的步骤,即将所有值与2014年的值相除,您可以对每个国家/地区执行此操作。
library(dplyr)
data <- read.table("https://pastebin.com/raw/6cetukKb", header = TRUE)
data %>%
tidyr::pivot_longer(cols = Antigua_Barbuda:Barbados) %>%
group_by(name, year) %>%
summarise(value = mean(value)) %>%
mutate(adj_factor = value/value[year == 2014])
# name year value adj_factor
# <chr> <int> <dbl> <dbl>
# 1 Antigua_Barbuda 2014 96.4 1
# 2 Antigua_Barbuda 2015 96.6 1.00
# 3 Antigua_Barbuda 2016 96.1 0.997
# 4 Antigua_Barbuda 2017 98.4 1.02
# 5 Antigua_Barbuda 2018 99.6 1.03
# 6 Antigua_Barbuda 2019 101. 1.05
# 7 Argentina 2014 56.6 1
# 8 Argentina 2015 64.0 1.13
# 9 Argentina 2016 89.9 1.59
#10 Argentina 2017 113. 2.00
# … with 20 more rowshttps://stackoverflow.com/questions/64853142
复制相似问题