R语言 时间序列数据的百分比变化

krugob8w  于 2023-09-27  发布在  其他
关注(0)|答案(1)|浏览(131)

我只想生成一个变量,它捕获变量(v2x_polyarchy)每年的相对下降。这是我的 Dataframe 'episodes_demreg'的基本外观:

country_name year   demreg_id  v2x_polyarchy
<chr>        <dbl>  <dbl>      <dbl>   
Suriname     1974   1          0.536 
Suriname     1975   1          0.375
Suriname     1979   2          0.713
Suriname     1980   2          0.226
Suriname     1990   3          0.743
Suriname     1991   3          0.455

基于非常相似的线程(Percent change difference for time series data)上的建议,我这样尝试:

episodes_demreg <- episodes_demreg %>%
  group_by(demreg_id) %>%
  mutate (decline_year_relative = ((v2x_polyarchy - lag(v2x_polyarchy)) / lag(v2x_polyarchy)) * 100)

但是,这不起作用,因为它会导致每个观察值为“0”。来回显示,显然“滞后”不起作用,实际上它减去了同一行的观察结果,而不是前一行。你知道为什么会这样吗

lx0bsm1f

lx0bsm1f1#

您正在使用stats包中的lag,而您希望使用dplyr包中的lag
您可以在调用lag时指定包

group_by(demreg_id) %>%
  mutate (decline_year_relative = ((v2x_polyarchy - dplyr::lag(v2x_polyarchy)) / dplyr::lag(v2x_polyarchy)) * 100)

或将dplyr设置为默认包以使用lag

lag <- dplyr::lag

相关问题