% group_by(firm) %>% -6ren">
gpt4 book ai didi

r - 计算面板数据的增长率

转载 作者:行者123 更新时间:2023-12-05 09:22:22 25 4
gpt4 key购买 nike

data("Grunfeld",package = "AER")
library("plm")
gr <- subset(Grunfeld, firm %in% c("General Electric","General Motors"))
pgr <- plm.data(gr,index = c("firm","year"))

row.names firm year invest value capital
1 1 General Motors 1935 317.6 3078.5 2.8
2 2 General Motors 1936 391.8 4661.7 52.6
3 3 General Motors 1937 410.6 5387.1 156.9
4 4 General Motors 1938 257.7 2792.2 209.2
5 5 General Motors 1939 330.8 4313.2 203.4
6 6 General Motors 1940 461.2 4643.9 207.2
7 7 General Motors 1941 512.0 4551.2 255.2
8 8 General Motors 1942 448.0 3244.1 303.7
9 9 General Motors 1943 499.6 4053.7 264.1
10 10 General Motors 1944 547.5 4379.3 201.6
11 11 General Motors 1945 561.2 4840.9 265.0
12 12 General Motors 1946 688.1 4900.9 402.2
13 13 General Motors 1947 568.9 3526.5 761.5
14 14 General Motors 1948 529.2 3254.7 922.4
15 15 General Motors 1949 555.1 3700.2 1020.1
16 16 General Motors 1950 642.9 3755.6 1099.0
17 17 General Motors 1951 755.9 4833.0 1207.7
18 18 General Motors 1952 891.2 4924.9 1430.5
19 19 General Motors 1953 1304.4 6241.7 1777.3
20 20 General Motors 1954 1486.7 5593.6 2226.3
21 41 General Electric 1935 33.1 1170.6 97.8
22 42 General Electric 1936 45.0 2015.8 104.4
23 43 General Electric 1937 77.2 2803.3 118.0
24 44 General Electric 1938 44.6 2039.7 156.2
25 45 General Electric 1939 48.1 2256.2 172.6
26 46 General Electric 1940 74.4 2132.2 186.6
27 47 General Electric 1941 113.0 1834.1 220.9
28 48 General Electric 1942 91.9 1588.0 287.8
29 49 General Electric 1943 61.3 1749.4 319.9
30 50 General Electric 1944 56.8 1687.2 321.3
31 51 General Electric 1945 93.6 2007.7 319.6
32 52 General Electric 1946 159.9 2208.3 346.0
33 53 General Electric 1947 147.2 1656.7 456.4
34 54 General Electric 1948 146.3 1604.4 543.4
35 55 General Electric 1949 98.3 1431.8 618.3
36 56 General Electric 1950 93.5 1610.5 647.4
37 57 General Electric 1951 135.2 1819.4 671.3
38 58 General Electric 1952 157.3 2079.7 726.1
39 59 General Electric 1953 179.5 2371.6 800.3
40 60 General Electric 1954 189.6 2759.9 888.9

上面是数据,那我要计算投资的增长率,所以通用汽车增长率的第一个值为NA,通用电气的第一个值为同上,也就是说我要按组计算增长率。

如果我使用以下命令:

pgr$invest_growth <- NA
pgr$invest_growth<- c(NA,diff(invest)/invest[-length(invest)])

我会得到一个结果,但是对于数字 41,我得到通用汽车和通用电气之间的增长率,对于我的问题,我希望数字 41 的值为 NA。

就像

id firm invest
1 A 2
2 A 1
3 A 4
4 A 3
1 B 2
2 B 5
3 B 2
4 B 1

然后

id firm invest growth rate
1 A 1 NA
2 A 2 1
3 A 3 0.5
4 A 4 0.3333
1 B 5 NA
2 B 6 0.2
3 B 7 0.1666.
4 B 8 0.14

那么针对这种情况的命令是什么?非常感谢。

最佳答案

使用dplyr包:

Grunfeld %>% 
select(firm,invest) %>%
group_by(firm) %>%
mutate(growth = c(NA,diff(invest))/lag(invest, 1))

关于r - 计算面板数据的增长率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27214717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com