Предположим, у меня есть следующие данные панделя дисбаланса:
unbalanced.panel = structure(list(firm = c("A", "A", "A", "A", "B", "B", "A", "A",
"B", "C", "C"), ind = c(1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1), year = c(2010,
2011, 2012, 2013, 2011, 2013, 2011, 2012, 2010, 2012, 2013),
charac1 = c("x", "x", "x", "x", "y", "y", "z", "z", "g",
"h", "h"), var1 = c(11, 12, 13, 14, 15, 18, 15, 29, 31, 13,
2)), row.names = c(NA, -11L), class = c("tbl_df", "tbl",
"data.frame"))
firm ind year charac1 var1
<chr> <dbl> <dbl> <chr> <dbl>
1 A 1 2010 x 11
2 A 1 2011 x 12
3 A 1 2012 x 13
4 A 1 2013 x 14
5 B 2 2011 y 15
6 B 2 2013 y 18
7 A 2 2011 z 15
8 A 2 2012 z 29
9 B 1 2010 g 31
10 C 1 2012 h 13
11 C 1 2013 h 2
Где каждая уникальная группа (индивидуум) идентифицируется комбинацией firm
и ind
, т. е. индивидуум «А1» отличается от индивидуума «А2». А индекс времени задается переменной year
.
Я хочу сбалансировать панальные данные (индекс = (индивидуум = фирма-инд, время = год)) заполнив неявные недостающие пробелы с помощью NA.
Желаемый результат выглядит следующим образом:
firm ind year charac1 var1
<chr> <dbl> <dbl> <chr> <dbl>
1 A 1 2010 x 11
2 A 1 2011 x 12
3 A 1 2012 x 13
4 A 1 2013 x 14
5 B 2 2010 y NA
6 B 2 2011 y 15
7 B 2 2012 y NA
8 B 2 2013 y 18
9 A 2 2010 z NA
10 A 2 2011 z 15
11 A 2 2012 z 29
12 A 2 2013 z NA
13 B 1 2010 g 31
14 B 1 2011 g NA
15 B 1 2012 g NA
16 B 1 2013 g NA
17 C 1 2010 h NA
18 C 1 2011 h NA
19 C 1 2012 h 13
20 C 1 2013 h 2
Я пытался использовать plm::make.pbalanced(unbalanced.panel, balance.type = "fill")
, но получил следующую ошибку:
Ошибка в режиме‹-(tmp, value = id_orig_typeof): невозможно изменить режим хранения фактора
Я даже пытался использовать tidyr::complete()
, но это не помогает добиться желаемого баланса панели.
Вот мой запрос: когда у уникального физического лица (фирма-инд) отсутствует строка года, переменные во времени (var1) должны быть заполнены NA, но неизменные во времени переменные, такие как характеристики (charact1), должны быть заполнены уникальными ценность.
В чем проблема с tidyr::complete()
подходом? Это не позволяет мне различать переменные, не зависящие от времени, и переменные, которые должны быть заполнены или расширены. И он не идентифицирует однозначно индивидуальный индекс (в данном случае фирменный индекс).
unbalanced.panel >%>
tidyr::complete(firm, year, nesting(var1))
Вышеприведенный код создает новую индивидуальную «C2» и заполняет NA переменные, не зависящие от времени.