如何计算面板中不同时间范围内变量的增长率?
How to compute the growth rate of a variable for a varying time horizon in a panel?
我正在尝试计算 40 年时间范围内 32 个州的人均国内生产总值 (pib_pc) 增长率,但时间范围会发生变化。例如,在第一行中,我想获得州 i 在 1980 年至 2017 年之间的增长率 pib_pc,在第二行中,州 i 在 1981 年至 2017 年之间的增长率,依此类推每年和状态。
附上我的面板的图片:
The panel
到目前为止,我已经能够使用包 dplyr 中的 mutate 和 lead 来计算 pib_pc 5 年和 10 年的增长率。这是代码:
data <- data %>%
group_by(estado) %>%
mutate(g_10 = (dplyr::lead(pib_pc,10)-pib_pc)/pib_pc) %>%
mutate(g_15 = (dplyr::lead(pib_pc,15)-pib_pc)/pib_pc) %>%
ungroup()
您在找这样的东西吗?
library(dplyr)
data <- data.frame(
state = rep(c('Aguascalientes', 'Jalisco'), each = 10),
year = 2011:2020,
population = 91:100,
gdp = 100:109
)
data
#> state year population gdp
#> 1 Aguascalientes 2011 91 100
#> 2 Aguascalientes 2012 92 101
#> 3 Aguascalientes 2013 93 102
#> 4 Aguascalientes 2014 94 103
#> 5 Aguascalientes 2015 95 104
#> 6 Aguascalientes 2016 96 105
#> 7 Aguascalientes 2017 97 106
#> 8 Aguascalientes 2018 98 107
#> 9 Aguascalientes 2019 99 108
#> 10 Aguascalientes 2020 100 109
#> 11 Jalisco 2011 91 100
#> 12 Jalisco 2012 92 101
#> 13 Jalisco 2013 93 102
#> 14 Jalisco 2014 94 103
#> 15 Jalisco 2015 95 104
#> 16 Jalisco 2016 96 105
#> 17 Jalisco 2017 97 106
#> 18 Jalisco 2018 98 107
#> 19 Jalisco 2019 99 108
#> 20 Jalisco 2020 100 109
data %>%
group_by(state) %>%
mutate(
across(c(gdp, population), ~(.[year == 2020] - .) / ., .names = '{col}_%change')
)
#> # A tibble: 20 x 6
#> # Groups: state [2]
#> state year population gdp `gdp_%change` `population_%change`
#> <chr> <int> <int> <int> <dbl> <dbl>
#> 1 Aguascalientes 2011 91 100 0.09 0.0989
#> 2 Aguascalientes 2012 92 101 0.0792 0.0870
#> 3 Aguascalientes 2013 93 102 0.0686 0.0753
#> 4 Aguascalientes 2014 94 103 0.0583 0.0638
#> 5 Aguascalientes 2015 95 104 0.0481 0.0526
#> 6 Aguascalientes 2016 96 105 0.0381 0.0417
#> 7 Aguascalientes 2017 97 106 0.0283 0.0309
#> 8 Aguascalientes 2018 98 107 0.0187 0.0204
#> 9 Aguascalientes 2019 99 108 0.00926 0.0101
#> 10 Aguascalientes 2020 100 109 0 0
#> 11 Jalisco 2011 91 100 0.09 0.0989
#> 12 Jalisco 2012 92 101 0.0792 0.0870
#> 13 Jalisco 2013 93 102 0.0686 0.0753
#> 14 Jalisco 2014 94 103 0.0583 0.0638
#> 15 Jalisco 2015 95 104 0.0481 0.0526
#> 16 Jalisco 2016 96 105 0.0381 0.0417
#> 17 Jalisco 2017 97 106 0.0283 0.0309
#> 18 Jalisco 2018 98 107 0.0187 0.0204
#> 19 Jalisco 2019 99 108 0.00926 0.0101
#> 20 Jalisco 2020 100 109 0 0
由 reprex package (v2.0.1)
于 2022-03-28 创建
我正在尝试计算 40 年时间范围内 32 个州的人均国内生产总值 (pib_pc) 增长率,但时间范围会发生变化。例如,在第一行中,我想获得州 i 在 1980 年至 2017 年之间的增长率 pib_pc,在第二行中,州 i 在 1981 年至 2017 年之间的增长率,依此类推每年和状态。
附上我的面板的图片: The panel
到目前为止,我已经能够使用包 dplyr 中的 mutate 和 lead 来计算 pib_pc 5 年和 10 年的增长率。这是代码:
data <- data %>%
group_by(estado) %>%
mutate(g_10 = (dplyr::lead(pib_pc,10)-pib_pc)/pib_pc) %>%
mutate(g_15 = (dplyr::lead(pib_pc,15)-pib_pc)/pib_pc) %>%
ungroup()
您在找这样的东西吗?
library(dplyr)
data <- data.frame(
state = rep(c('Aguascalientes', 'Jalisco'), each = 10),
year = 2011:2020,
population = 91:100,
gdp = 100:109
)
data
#> state year population gdp
#> 1 Aguascalientes 2011 91 100
#> 2 Aguascalientes 2012 92 101
#> 3 Aguascalientes 2013 93 102
#> 4 Aguascalientes 2014 94 103
#> 5 Aguascalientes 2015 95 104
#> 6 Aguascalientes 2016 96 105
#> 7 Aguascalientes 2017 97 106
#> 8 Aguascalientes 2018 98 107
#> 9 Aguascalientes 2019 99 108
#> 10 Aguascalientes 2020 100 109
#> 11 Jalisco 2011 91 100
#> 12 Jalisco 2012 92 101
#> 13 Jalisco 2013 93 102
#> 14 Jalisco 2014 94 103
#> 15 Jalisco 2015 95 104
#> 16 Jalisco 2016 96 105
#> 17 Jalisco 2017 97 106
#> 18 Jalisco 2018 98 107
#> 19 Jalisco 2019 99 108
#> 20 Jalisco 2020 100 109
data %>%
group_by(state) %>%
mutate(
across(c(gdp, population), ~(.[year == 2020] - .) / ., .names = '{col}_%change')
)
#> # A tibble: 20 x 6
#> # Groups: state [2]
#> state year population gdp `gdp_%change` `population_%change`
#> <chr> <int> <int> <int> <dbl> <dbl>
#> 1 Aguascalientes 2011 91 100 0.09 0.0989
#> 2 Aguascalientes 2012 92 101 0.0792 0.0870
#> 3 Aguascalientes 2013 93 102 0.0686 0.0753
#> 4 Aguascalientes 2014 94 103 0.0583 0.0638
#> 5 Aguascalientes 2015 95 104 0.0481 0.0526
#> 6 Aguascalientes 2016 96 105 0.0381 0.0417
#> 7 Aguascalientes 2017 97 106 0.0283 0.0309
#> 8 Aguascalientes 2018 98 107 0.0187 0.0204
#> 9 Aguascalientes 2019 99 108 0.00926 0.0101
#> 10 Aguascalientes 2020 100 109 0 0
#> 11 Jalisco 2011 91 100 0.09 0.0989
#> 12 Jalisco 2012 92 101 0.0792 0.0870
#> 13 Jalisco 2013 93 102 0.0686 0.0753
#> 14 Jalisco 2014 94 103 0.0583 0.0638
#> 15 Jalisco 2015 95 104 0.0481 0.0526
#> 16 Jalisco 2016 96 105 0.0381 0.0417
#> 17 Jalisco 2017 97 106 0.0283 0.0309
#> 18 Jalisco 2018 98 107 0.0187 0.0204
#> 19 Jalisco 2019 99 108 0.00926 0.0101
#> 20 Jalisco 2020 100 109 0 0
由 reprex package (v2.0.1)
于 2022-03-28 创建