Рассмотрим данные панели с удаленными 300 строками.

data("EmplUK", package="plm")
set.seed(42)
EmplUK<-EmplUK[-sample(1:nrow(EmplUK),300),]
  firm year sector    emp    wage capital   output
1    1 1977      7  5.041 13.1516  0.5894  95.7072
4    1 1980      7  4.715 13.8039  0.6171 100.5501
5    1 1981      7  4.093 14.2897  0.5076  99.5581
6    1 1982      7  3.166 14.8681  0.4229  98.6151
7    1 1983      7  2.936 13.7784  0.3920 100.0301
8    2 1977      7 71.319 14.7909 16.9363  95.7072

Я хочу добавить тенденцию для этого фрейма данных, т.е. иметь числа от 1: что-то для каждой фирмы.

Проблема в том, что у каждой фирмы нет определенного количества наблюдаемых лет, то есть у фирмы есть 1977, 1980, 1981, 1982 (поэтому вектор тренда для фирмы 1 должен быть: 1,2,3,4). Фирма 3 имеет 1977,1979,1980,1981,1982,1983 (вектор тренда для фирмы 3 должен быть: 1,2,3,4,5,6).

Я не уверен, как это можно легко сделать. Я знаю, что для каждой фирмы я могу создать вектор лет unique() и пронумеровать 1:length(uniqie()). Ничего страшного, есть ли способ попроще, как это можно сделать?

0
John 2 Дек 2020 в 14:59

1 ответ

Лучший ответ

Не уверен, что вы хотите, но попробуйте этот подход с dplyr:

library(dplyr)
data("EmplUK", package="plm")
set.seed(42)
EmplUK<-EmplUK[-sample(1:nrow(EmplUK),300),]
#Code
New <- EmplUK %>% group_by(firm) %>% mutate(Trend=row_number())

Выход:

# A tibble: 731 x 8
# Groups:   firm [140]
    firm  year sector   emp  wage capital output Trend
   <dbl> <dbl>  <dbl> <dbl> <dbl>   <dbl>  <dbl> <int>
 1     1  1977      7  5.04  13.2   0.589   95.7     1
 2     1  1980      7  4.72  13.8   0.617  101.      2
 3     1  1981      7  4.09  14.3   0.508   99.6     3
 4     1  1982      7  3.17  14.9   0.423   98.6     4
 5     1  1983      7  2.94  13.8   0.392  100.      5
 6     2  1977      7 71.3   14.8  16.9     95.7     1
 7     2  1978      7 70.6   14.1  17.2     97.4     2
 8     2  1980      7 72.0   15.5  17.7    101.      3
 9     2  1982      7 72.4   16.1  16.2     98.6     4
10     3  1977      7 19.2   22.7   7.10    95.7     1
# ... with 721 more rows
1
Duck 2 Дек 2020 в 12:28