Включая тенденцию к фрейму данных с разным количеством наблюдаемых лет

#r #dataframe

#r #фрейм данных

Вопрос:

Давайте рассмотрим панельные данные с удаленными 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). Третья фирма имеет 1977,1979,1980,1981,1982,1983 (вектор тренда для третьей фирмы должен быть: 1,2,3,4,5,6).

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

Ответ №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