R dplyr:面板数据 - 相对值
R dplyr: Panel Data - Relative values
我以下面的数据集为例:
library(plm)
data(EmplUK)
head(EmplUK)
firm year sector emp wage capital output
1 1 1977 7 5.041 13.15 0.5894 95.71
2 1 1978 7 5.600 12.30 0.6318 97.36
3 1 1979 7 5.015 12.84 0.6771 99.61
4 1 1980 7 4.715 13.80 0.6171 100.55
5 1 1981 7 4.093 14.29 0.5076 99.56
6 1 1982 7 3.166 14.87 0.4229 98.62
我想添加一行rel_emp
,其中每个观察值都有相对于公司 1 在相应年份的就业的就业。
例如。公司 2 在 1983 年的 rel_emp
的值应该是公司 2 在 1983 年的 emp
除以公司 1 在 1983 年的 emp
。
可能的解决方案:
1.提取公司1的就业:
library(dplyr)
emp_firm1 = EmplUK %>% filter(firm==1) %>% dplyr::select(year, emp)
按年份添加emp_firm1
到EmplUK
(我现在不知道怎么做)
将 emp
除以 emp_firm1
:
EmplUK=mutate(EmplUK, rel_emp=emp/emp_firm1)
非常感谢。
我们先合并,再拆分,整理得到原来的布局:
library(dplyr)
EmplUK %>% filter(firm == 1) %>%
dplyr::select(year, emp) %>%
left_join(EmplUK, by="year") %>%
mutate(rel_emp = emp.y/emp.x) %>%
arrange(firm, year)
# year emp.x firm sector emp.y wage capital output rel_emp
# 1 1977 5.041 1 7 5.041 13.1516 0.5894 95.7072 1.00000000
# 2 1978 5.600 1 7 5.600 12.3018 0.6318 97.3569 1.00000000
# 3 1979 5.015 1 7 5.015 12.8395 0.6771 99.6083 1.00000000
# 4 1980 4.715 1 7 4.715 13.8039 0.6171 100.5501 1.00000000
# 5 1981 4.093 1 7 4.093 14.2897 0.5076 99.5581 1.00000000
# 6 1982 3.166 1 7 3.166 14.8681 0.4229 98.6151 1.00000000
# 7 1983 2.936 1 7 2.936 13.7784 0.3920 100.0301 1.00000000
# 8 1977 5.041 2 7 71.319 14.7909 16.9363 95.7072 14.14778842
# 9 1978 5.600 2 7 70.643 14.1036 17.2422 97.3569 12.61482130
# 10 1979 5.015 2 7 70.918 14.9534 17.5413 99.6083 14.14117655
# 11 1980 4.715 2 7 72.031 15.4910 17.6574 100.5501 15.27698726
# 12 1981 4.093 2 7 73.689 16.1969 16.7133 99.5581 18.00366597
# 13 1982 3.166 2 7 72.419 16.1314 16.2469 98.6151 22.87397387
# 14 1983 2.936 2 7 68.518 16.3051 17.3696 100.0301 23.33719198
# 15 1977 5.041 3 7 19.156 22.6920 7.0975 95.7072 3.80003975
# 16 1978 5.600 3 7 19.440 20.6938 6.9469 97.3569 3.47142881
# 17 1979 5.015 3 7 19.900 21.2048 6.8565 99.6083 3.96809579
# 18 1980 4.715 3 7 20.240 22.1970 6.6547 100.5501 4.29268274
# 19 1981 4.093 3 7 19.570 24.8714 6.2136 99.5581 4.78133410
我以下面的数据集为例:
library(plm)
data(EmplUK)
head(EmplUK)
firm year sector emp wage capital output
1 1 1977 7 5.041 13.15 0.5894 95.71
2 1 1978 7 5.600 12.30 0.6318 97.36
3 1 1979 7 5.015 12.84 0.6771 99.61
4 1 1980 7 4.715 13.80 0.6171 100.55
5 1 1981 7 4.093 14.29 0.5076 99.56
6 1 1982 7 3.166 14.87 0.4229 98.62
我想添加一行rel_emp
,其中每个观察值都有相对于公司 1 在相应年份的就业的就业。
例如。公司 2 在 1983 年的 rel_emp
的值应该是公司 2 在 1983 年的 emp
除以公司 1 在 1983 年的 emp
。
可能的解决方案:
1.提取公司1的就业:
library(dplyr)
emp_firm1 = EmplUK %>% filter(firm==1) %>% dplyr::select(year, emp)
按年份添加
emp_firm1
到EmplUK
(我现在不知道怎么做)将
emp
除以emp_firm1
:EmplUK=mutate(EmplUK, rel_emp=emp/emp_firm1)
非常感谢。
我们先合并,再拆分,整理得到原来的布局:
library(dplyr)
EmplUK %>% filter(firm == 1) %>%
dplyr::select(year, emp) %>%
left_join(EmplUK, by="year") %>%
mutate(rel_emp = emp.y/emp.x) %>%
arrange(firm, year)
# year emp.x firm sector emp.y wage capital output rel_emp
# 1 1977 5.041 1 7 5.041 13.1516 0.5894 95.7072 1.00000000
# 2 1978 5.600 1 7 5.600 12.3018 0.6318 97.3569 1.00000000
# 3 1979 5.015 1 7 5.015 12.8395 0.6771 99.6083 1.00000000
# 4 1980 4.715 1 7 4.715 13.8039 0.6171 100.5501 1.00000000
# 5 1981 4.093 1 7 4.093 14.2897 0.5076 99.5581 1.00000000
# 6 1982 3.166 1 7 3.166 14.8681 0.4229 98.6151 1.00000000
# 7 1983 2.936 1 7 2.936 13.7784 0.3920 100.0301 1.00000000
# 8 1977 5.041 2 7 71.319 14.7909 16.9363 95.7072 14.14778842
# 9 1978 5.600 2 7 70.643 14.1036 17.2422 97.3569 12.61482130
# 10 1979 5.015 2 7 70.918 14.9534 17.5413 99.6083 14.14117655
# 11 1980 4.715 2 7 72.031 15.4910 17.6574 100.5501 15.27698726
# 12 1981 4.093 2 7 73.689 16.1969 16.7133 99.5581 18.00366597
# 13 1982 3.166 2 7 72.419 16.1314 16.2469 98.6151 22.87397387
# 14 1983 2.936 2 7 68.518 16.3051 17.3696 100.0301 23.33719198
# 15 1977 5.041 3 7 19.156 22.6920 7.0975 95.7072 3.80003975
# 16 1978 5.600 3 7 19.440 20.6938 6.9469 97.3569 3.47142881
# 17 1979 5.015 3 7 19.900 21.2048 6.8565 99.6083 3.96809579
# 18 1980 4.715 3 7 20.240 22.1970 6.6547 100.5501 4.29268274
# 19 1981 4.093 3 7 19.570 24.8714 6.2136 99.5581 4.78133410